前回はSuperCSVでcsvファイルを読むというプログラムを書きました。
今回はそれをモジュール化してさらにテストしてみます。
-----------------------------------------------------------------------
CSVReader.java
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.supercsv.io.CsvListReader;
import org.supercsv.io.ICsvListReader;
import org.supercsv.prefs.CsvPreference;
public class CSVReader {
public List<List<String>> csvFileReader(String filePath) throws IOException{
ICsvListReader reader = new CsvListReader(new FileReader(filePath), CsvPreference.EXCEL_PREFERENCE);
List<List<String>> list = new ArrayList<List<String>>();
List<String> temp = null;
while ((temp = reader.read()) != null){
list.add(new ArrayList<String>(temp));
}
return list;
}
}
-----------------------------------------------------------------------
CSVファイルの行数だけListにaddしてListオブジェクトに返すというプログラムです。
引数にはcsvファイルのパスが入ります。
CSVReader.java を右クリックしてJUnitを選択します
JUnit4を選択して、先ほど書いたプログラムを指定して終了をクリックします
テストクラスができたら以下のように編集します。
-----------------------------------------------------------------------
import static org.junit.Assert.*;
import java.io.IOException;
import java.util.List;
import org.junit.Test;
public class CSVReaderTest {
private CSVReader csvReader = null;
public CSVReaderTest() {
csvReader = new CSVReader();
}
@Test
public void testCsvFileReader() throws IOException {
List<List<String>> list = csvReader.csvFileReader("sample.csv");
List<String> testList = list.get(1);
assertEquals(2, list.size());
assertEquals("たれみ\nみうさぎ", testList.get(0));
assertEquals("ホーランド,ロップ", testList.get(1));
assertEquals("ミニ\nレッキス\"!\"アンドレッキス", testList.get(2));
}
}
-----------------------------------------------------------------------
CSVReaderTest.java を右クリックし 実行 => JUnitをクリックします
緑色のバーになれば成功です。
CSVファイルの2行目に書かれたウサギ達の名前が正しくよめれば成功です。
このassertEquals() の左辺と右辺が一致すると緑色になります。
これを見てめんどくさいな~ と思ったかもしれませんが
プログラムの単体テストを怠ると、それを結合テストに先送りしなければなりません。
結合テストで拾いきれないバグは本番環境へ流れていきます。
こんな小さなプログラムならば良いですが、規模が大きくなるとモジュールの変更が
どこまで影響するのかわからないので、
プログラムを修正してはJUnitをキックする
と言う習慣をつけましょう。実際の開発ではこれをやったのとやっていないので差がでてきます。
WebやバッチでのJUnitテストについてはまた日を改めて・・・
なお、ブログに書いてある内容がわかりづらいORコンパイルしたがうまく動かない 「まちがっとるぞー」
という場合はレスしてください。できるだけ修正いたします。
eclipseについての無難なマニュアルが欲しい方は↓に無難な本があります。
CDもついているので気軽にeclipseの機能を試せます。
- Eclipse 3.5 完全攻略/宮本 信二
- ¥2,940
- Amazon.co.jp

