最近SAStrutsをよく使用するため、アノテーション機能も使用する機会が多くなった。
その中でもTestNGというテスト用フレームワークは、すごく使いやすい。
■Eclipseにプラグインとして追加
以下のURLに書いてあるようにプラグインの追加を行なう。
http://testng.org/doc/download.html
Eclipseの再起動後、プロジェクトを作成。
プロジェクトを右クリック→プロパティ→Javaビルドパス→ライブラリへ移動
外部Jarの追加で「testng-jdk15.jar」を追加で完了
■テストされるクラスの作成
テストされるクラスを作成する。
ポイントは3点。
1.コンストラクタで引数を受け取ること。
2.コンストラクタで受け取った値を引数なしでreturnする。
3.引数とコンストラクタで受け取った値を結合してreturnする。
Sample.java
public class Sample {
private String value;
public Sample(String value) {
this.value = value;
}
public String str() {
return this.value;
}
public String str(String str) {
return str + "_" + this.value;
}
}
■テストクラスの作成
テスト用クラスを作成する。
今回は、引数なしのメソッドと引数ありのメソッドの2種類を作成するが、
ひとまず、引数なしのメソッドだけテストするクラスを作成する。
SampleTest.java
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/* これ重要 */
import static org.testng.Assert.*;
public class SampleTest {
private Sample sample;
/** BeforeClassを定義するとテスト処理の前にこのメソッドが呼ばれる */
@BeforeClass
public void init() {
this.sample = new Sample("test value");
}
/** 引数なしのテスト処理 */
@Test
public void sysout() {
String result = this.sample.str();
/* resultがnullではないか */
assertNotNull(result);
/* resultが第2引数と一致しているか */
assertEquals(result, "test value");
}
}
■テスト実行、確認
前項で作成したテストクラスを右クリック→実行(Run As)→TestNG Testをクリック
コンソールに実行結果がでているがひとまず無視。
プロジェクト名を右クリック→更新(Refresh)をクリック
すると、「test-output」と「temp-testng-customsuite.xml」が勝手に出力されているはず。
「test-output」は、テスト結果をHTMLとして出力してくれるため、
非常に便利。
それと「temp-testng-customsuite.xml」は、
テストを実行する際の設定ファイルになる。
■引数を渡したテストクラスの作成
先ほど作成したSample.javaの引数ありメソッドをテストする。
アノテーションParametersが2箇所入ってる。
このParametersは次項で設定ファイルに追記する。
SampleTest.java
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
/* これ重要 */
import static org.testng.Assert.*;
public class SampleTest {
private Sample sample;
/** BeforeClassを定義するとテスト処理の前にこのメソッドが呼ばれる */
@BeforeClass
@Parameters("const-value")
public void init(String constValue) {
this.sample = new Sample(constValue);
}
/** 引数なしのテスト処理 */
@Test
public void sysout() {
String result = this.sample.str();
/* resultがnullではないか */
assertNotNull(result);
/* resultが第2引数と一致しているか */
assertEquals(result, "test value");
}
/** 引数ありのテスト処理 */
@Test
@Parameters("test-value")
public void sysout(String str) {
String result = this.sample.str(str);
/* resultがnullではないか */
assertNotNull(result);
}
}
■設定ファイルを編集
解説も面倒になってきたので、設定ファイルを見て
あとは本家サイトで記述方法を学んでください。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="LoginSample"> <!-- テストクラス内で使用するパラメータ系を定義する --> <parameter name="const-value" value="test value" /> <parameter name="test-value" value="XXXXXXX" /> <!-- nameは必須項目。通常パッケージ名などでカテゴリ分けする --> <test name="defaultPackage"> <classes> <!-- テストするクラスを指定 --> <class name="SampleTest" /> </classes> </test> </suite>

