私たちの同僚のチームは、無料で入手できるDataProviderをJUnit用のTestNGスタイルで書いています。このデータプロバイダはon github (https://github.com/TNG/junit-dataprovider)です。
私たちは非常に大きなプロジェクトでそれを使用しています。 JUnitのParameterized
にはいくつかの利点があります。別々のクラスのオーバーヘッドを減らし、単一のテストも実行できるからです。
の例では、この
@DataProvider
public static Object[][] provideStringAndExpectedLength() {
return new Object[][] {
{ "Hello World", 11 },
{ "Foo", 3 }
};
}
@Test
@UseDataProvider("provideStringAndExpectedLength")
public void testCalculateLength(String input, int expectedLength) {
assertThat(calculateLength(input)).isEqualTo(expectedLength);
}
編集のようになります。V1.7以降、それはまた、データ(文字列、リスト)を提供するために、別の方法があるようにプロバイダーをインライン化することができ、他の方法をサポートしています必ずしも必要ではない。
完全な実際の例は、githubのマニュアルページにあります。また、ユーティリティクラスのプロバイダを収集し、他のクラスからアクセスするなど、いくつかの機能もあります。マニュアルページは非常に詳細です。そこには何か質問があります。
JUnitにはパラメータ化されたテストがあります。 –
しかし、パラメータ化されたJUnitテストのEclipse統合がうまくいくことに注意してください。 a)1つのパラメータセットを実行することはできません。b)テスト中に実際に失敗したパラメータ([0]、[1]、[2]など)がJUnitウィンドウからわかりにくいです。 – qqilihq
@qqilihq JUnit 4.11にはパラメータ化されたテストの名前を付け加えることで、この種の問題が解決されました。https://github.com/junit-team/junit/blob/master/doc/ReleaseNotes4.11.md – dkatzel