JUnit:Exceptionのテスト方法

junitでexceptionが発生した事の確認テストはどのようにすれば良いかメモしておきます。
exceptionの発生確認は@Test内に「(expected = [確認したいExceptionクラス])」を指定する事で簡単に確認する事が出来ます。

JUnitサンプル

CSVファイルの項目をダブルクォーテーションで囲む方法

CSVファイルを扱っていると項目値をダブルクォーテーションで囲まれていないケースもあり、これを項目毎にダブルクォーテーションで囲ませたい時があります。こういう場合に手っ取り早くダブルクォーテーションを付与する方法をご紹介します。基本的にはEXCELとサクラエディタなどのエディタを併用する事で実現出来ます。

使用するソフト

  • Microsoft Excel ※特にバージョンは問いません
  • サクラエディタ ※秀丸など他のエディタでも可

CSVファイルへのダブルクォーテーションの付与手順

  1. Excelで対象のCSVファイルを開きます。ここでは「sample.csv」を開いています。
    「sample.csv」の内容は以下の通りです。
  2. Excelでcsvファイルを開いたらデータの最終行の次行へ以下の数式を入力します。今回は1行空けて見やすくA5セルへ入力しています。
    ⇒「=””””&A1&””””」
  3. A5セルへダブルクォーテーション付で値が表示されましたので次にA5セルの式をA5:C7セルまでコピペします。
    ※項目数、行数によってペーストする範囲は変更して下さい。
  4. ここまで項目単位にはダブルクォーテーションが付与された状態になったのでこの内容をサクラエディタへ貼り付けます。
    ただこのままではカンマ区切りではなくタブ区切りの状態なので今度はこれをカンマ区切りへ変更します。
  5. 「Ctrl + R」で置換ダイアログを表示し、「置換前」の文字へ「\t」、「置換後」の文字へ「,」(カンマ)を入力し、正規表現へチェック後に「全て置換」を選択します。
  6. これでダブルクォーテーション付与のカンマ区切りのCSV形式の内容になったのでこの内容を元のファイルと差し替えれば完了です。

補足:CSV のダブルクォーテーション処理で注意すべき点

1. 既にダブルクォーテーションが含まれている値への対応

  • データの中にすでに "(ダブルクォーテーション)が含まれている場合、それをどう扱うかを考えておく必要があります。
    例えば、値が He said "Hello" のようになっていたとすると、ただ前後に " を付けるだけでは "He said "Hello"" のように不正な CSV になります。

  • 通常は、内部に含まれる """ のように二重化してエスケープする手法を使います(CSV 規格の慣例)。
    例:He said "Hello""He said ""Hello"""

2. 区切り文字や改行、カンマを含む値

  • 値にカンマ , や改行 \n が含まれる可能性がある場合は、必ずそのフィールドをダブルクォーテーションで囲む必要があります。
    そうしないと、カンマが「別フィールドの区切り」と誤認されてしまいます。

  • したがって、値を囲む処理を行う際には すべてのフィールド に対して囲むようにしておいたほうが安全です。

3. 文字コード・改行コードの扱い

  • CSV ファイルを扱う際には、文字コード(UTF-8, Shift_JIS, etc.)や改行コード(CRLF, LF, CR)が混在していることがあります。
    作業前に統一しておいた方がトラブルが起きにくくなります。

  • 特に Excel で読み書きする際には、Excel の仕様(Windows 版 Excel は CRLF を期待するなど)を意識しておきましょう。

4. 自動化スクリプトでの生成・変換を検討

  • Excel+エディタによる手作業の方法は簡便ですが、データ件数が多かったり繰り返し処理が必要だったりする場合は、スクリプトで一括処理できる方法を使ったほうが効率的・安全です。
    例:

    • Python(pandas や csv モジュール)

    • PowerShell / Bash スクリプト

    • あるいは Excel VBA マクロ など

    これらを使えば、囲み処理、内部の " のエスケープ、文字コード変換などもあわせて一括で処理できます。

5. 検証・動作確認を忘れずに

  • 実際に処理後の CSV を別のプログラム(Excel やデータベースのインポート機能等)で読み込んで、意図した通りにフィールドが分割されているかを確認しておきましょう。

  • 特に本番データで使う前には、サンプルデータでテストを繰り返すと安心です。