S2JUnit4 を使ったテスト
http://yakinikunotare.boo.jp/orebase2/sastruts/service_test_by_s2junit4
http://daipresents.com/2009/s2junit4_service_unit_testing/
準備
http://eclipse.seasar.org/updates/3.3/
から
S2JUnit4
をインストール
テストクラスの作成
- テストクラスを作成するファイルを右クリック
- S2JUnit4 -> テスティングペアを開く
- ペアがない場合は、「作成しますか?」と聞かれるので、「はい」
- テストの内容を書く
サンプル
1 |
package sample02.service; import static org.junit.Assert.*; import static org.seasar.framework.unit.S2Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.seasar.framework.unit.Seasar2; import org.seasar.framework.unit.TestContext; import sample02.entity.Dept; @RunWith(Seasar2.class) public class DeptServiceTest { private TestContext ctx; private DeptService deptService; /** * {@link sample02.service.DeptService#findById(java.lang.Long)} のためのテスト・メソッド。 */ //private DataAccessor accessor; @Test public void testFindById() { // System.out.println("hello"); // fail("まだ実装されていません"); //accessor.readXlsAllReplaceDb("DeptServiceTest_testFindById.xls"); Dept dept = deptService.findById(new Long(90000)); assertNull(ctx.getTestMethodName() + ":データが存在しない場合", dept); dept = deptService.findById(new Long(90001)); assertEquals(ctx.getTestMethodName() + ":データが存在する場合", ctx.getExpected(), dept); } } |
テストの実行
ファイルを選択して
ctrl+0
メニューから選んでもいいけど、バグがあるらしく「テストケースを選択してください」っと表示されて進まないことがある。
普通にJUnitテストを選んでもいけると思う。
テストデータについて
命名規則
s2junit4.dicon
にテストデータの命名規則が書いてある。基本的には
初期データは、テストクラス名_テストメソッド名.xls 実行後(期待される)データは、は、テストクラス名_テストメソッド名_Expected.xls
また、初期データは
テストクラス名.xls
としてまとめても良い。
accessor.readXlsAllReplaceDb("DeptServiceTest_testFindById.xls");
で、テストの前にメソッド名やクラス名と関係のないファイルを読み込むこともできる。
データの内容のルール
以下の様な決まりがあるので注意。
- sheet名に対象のテーブル
- 1行目にカラム名
- 2行目移行にデータ
データファイルのパス
基本的にはテストクラスと同じ場所にxlsファイルを置く。
環境によっては、テストクラスと同じ場所に置いても読み込んでくれないことがある。
1階層戻って、 target ディレクトリ以下に置けば読みこんでくれるはず。
例えば、テスト対象とテストクラスが
struts_sample02\src\main\java\sample02\service\DeptService.java struts_sample02\src\test\java\sample02\service\DeptServiceTest.java
の場合
struts_sample02\target\test-classes\sample02\service
にテストのデータ(xls)ファイルを置いてしまう。
テストを実際に行なっているパスを知る
System.out.println(getClass().getResource("").getPath());
をテストクラスに書くと実際にテストを行なっているパスがわかる。
テストの前にテーブルの中をテストデータに置き換える
1 |
TestContext ctx; public void before() { ctx.setPreparationType(PreparationType.ALL_REPLACE); } |
こうすることで、すべて置き換わる。
テスト後はロールバックするので元に戻る。
[通知用URL]
Tweet
最終更新時間:2013年06月02日 23時35分39秒