トップ 一覧 置換 検索 ヘルプ RSS ログイン

SAStrutsのテストの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!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 -> テスティングペアを開く
+ペアがない場合は、「作成しますか?」と聞かれるので、「はい」
+テストの内容を書く

サンプル
{{code Java,
 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());
をテストクラスに書くと実際にテストを行なっているパスがわかる。

!!テストの前にテーブルの中をテストデータに置き換える
{{code Java,
TestContext ctx;
 
public void before() {
    ctx.setPreparationType(PreparationType.ALL_REPLACE);
}
}}
こうすることで、すべて置き換わる。
テスト後はロールバックするので元に戻る。 

{{category2 プログラミング言語,Servlet & Struts}}