TestNGを使い始めてみた雑感

はじめに

php,Flex,VB2008,Cと巡りめぐってまたJava開発に戻ったら、色んなことが変わっていて驚いてます、ということを書こうとしていて、まず浮かんだのがTestNGでした。
Java界隈の方々からしたら「何を今更?」という内容だとは思いますが(汗
ここのところ全然記事書いてなかったので、記法思い出しながらですが書いてみます。

TestNG vs. JUnit

JUnitではなく、TestNGを使う利点は記事の通り。
コード品質を追求する: JUnit 4 対 TestNG

TestNGの特徴などの説明はこちら。
次世代テストフレームワークでテストを変える

TestNG本家
TestNG

DataProviderが便利

特に、パターン試験を多く行う局面では、@DataProviderが便利だと思います。入力値と期待値をDataProviderで定義してテストメソッドを呼び出してます。

@Parameterと@DataProviderの使い分けは...

テストメソッドにパラメータを渡す役割がParameter(テストスイートのXMLファイルに定義)とDataProvider(テストクラス内で定義)だと思っているのですが、一つのテストメソッドに上記の2つを同時にかけないのが残念でした。
うまい方法が浮かばなかったので、DataProviderで固定リソースの読み込みを入れてみました。

テストメソッドの依存関係と再実行

TestNGの特徴として、テストメソッド間に依存関係が設定できる、というものがあります。依存されているメソッドが失敗すると、依存しているメソッドはスキップされるという作りになっています。
ここまでの説明を読んで気になったことは以下。それぞれ動作確認を行い、改めて「なるほど!」と思いました。

  • 依存しているメソッドを単独動作したらどうなるの?→スキップされる。
  • 依存しているメソッドが失敗した際の再実行は? →依存されているテストメソッド(必要最低限)と、依存しているメソッドが再実行対象になる。

ここは素直にすごいなと感じたところです。