Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

プレゼン、ボランティアコーチします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチします!資料レビューや録画リハへアドバイスします。Twitter@jyukutyoまでメンションでもDMでも。

私はデブサミやJJUG CCCなど200人規模で登壇経験ありです。海外での登壇も短いながらあり。デブサミ2017では公募スピーカー1位でした!

世界一やさしいTestNGの使い方

JARファイルをダウンロードする

TestNGのサイトにいきます。
メニューから「Download」を選びます。
「download TestNG here.」のリンクを押すと最新のJARファイルをダウンロードできます。
f:id:jyukutyo:20080827105650p:image
ダウンロードしたzipファイルを解凍します。
解凍したディレクトリの直下にある「testng-X.X-jdkXX.jar」をクラスパスに追加します。
2種類ありますが、JDKのバージョンに合わせて選択してください。

JDK1.4の場合

testng-X.X-jdk14.jar」をクラスパスに追加します。

JDK1.5以降の場合

testng-X.X-jdk15.jar」をクラスパスに追加します。


これでTestNGを利用できます。

eclipseプラグインを利用する

アップデートサイトを利用してプラグインをインストールします。
eclipse3.4以降なら、ヘルプ(Help)→ソフトウェアアップデート(Software Updates...)を選択します。
利用できるソフトウェア(Available Software)を選択します。
サイトを追加(Add Site)で「http://beust.com/eclipse」を入力し、OKを押します。
ソフトウェアアップデートの画面に新たに「http://beust.com/eclipse」が表示されます。
それにチェックを入れてインストール(Install)を押します。
あとは表示される画面にOKを押してそのまま進めます。
これでeclipseプラグインのインストールは完了です。

テストを作成する

普通のJavaクラスを作成します。継承やインタフェースの実装は必要ありません。クラス名も任意です。
メソッドを作成します。必ず修飾子はpublic、戻り値はvoidにします。メソッド名は任意です。
「org.testng.annotations.Test」クラスをインポートします。Testはアノテーションクラスです。
作成したメソッド(テストメソッド)に@Testアノテーションをつけます。

@Test
public void verifySample() {
	// describe your test program...
}

@Testをつけることで、TestNGはそのメソッドをテストメソッドと認識し、テストを実行してくれます。

実行結果を検証する

実行結果が正しいかどうか検証するには、「org.testng.Assert」クラスを利用します。これはJUnitのAssertと同じ役割です。
「org.testng.Assert」クラスのassertXXX()メソッドを利用して検証します。assertXXX()メソッドはすべてstaticメソッドなので、JDK5.0以降であればstaticインポートを利用するとよいです。

import static org.testng.Assert.assertEquals;

assertXXX()には主に4つの種類があります。

メソッド名 役割
assertEquals(実行した結果, 期待する結果) 実行した結果が期待する結果と同じか比較する
assertNull(実行した結果) 実行した結果がnullか比較する
assertSame(実行した結果, 期待する結果) 実行した結果が期待する結果と同じインスタンスか比較する
assertTrue(実行した結果) 実行した結果がtrueか比較する

assertEquals()とassertSame()の違いは1つだけです。
assertEquals()は同じかどうかを、equals()メソッドを使って比較します。equals()メソッドはJavaのすべてのクラスのスーパークラスであるObjectクラスに定義されているメソッドです。
assertSame()は同じインスタンスかどうかを比較します。「==」を使って比較するのと同じです。
assertXXXには、比較した結果が違っていたときに、任意のメッセージを表示させることができます。上記の表の引数にプラスString型の引数があるメソッドがあります。
たとえば、assertEquals(実行した結果, 期待する結果, メッセージ)のような形です。
ほかにもassertNotNull(),assertNotSame(),assertFalse()がありますが、上記の表にあるメソッドの意味を反転させただけのものです。

テストを実行する

eclipseであれば、作成したクラスを選んだ状態でメニューの実行設定(Run Configurations)を選択します。
左ペインでTestNGを選択します。
f:id:jyukutyo:20080827105649p:image
TestタブでClassにチェックを入れます。
Classの横にあるBrowse...を押し、作成したクラスを選択します。
実行(Run)を押すとテストを実行します。
JUnitと同様、成功するとグリーンバーを、失敗するとレッドバーを表示します。
f:id:jyukutyo:20080827105648p:image

JUnitと代わりありません

使い方に関しては、TestNGJUnitに違いはありません。
基本的な機能を使う分には、新たに覚え直すこともありません。
JUnitにはない、TestNGの便利な機能を使いたくなったら、そのときに調べればいいだけです。
JUnitTestNGの機能の違いはこちらによい図があります。