トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF 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

をインストール

 テストクラスの作成

  1. テストクラスを作成するファイルを右クリック
  2. S2JUnit4 -> テスティングペアを開く
  3. ペアがない場合は、「作成しますか?」と聞かれるので、「はい」
  4. テストの内容を書く

サンプル

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 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
2
3
4
5
TestContext ctx;
 
public void before() {
    ctx.setPreparationType(PreparationType.ALL_REPLACE);
}

こうすることで、すべて置き換わる。
テスト後はロールバックするので元に戻る。

[カテゴリ: プログラミング言語 > Servlet & Struts]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2013年06月02日 23時35分39秒