| テストNG | |
|---|---|
| 開発者 | Cédric Beust、TestNGチーム |
| 安定版リリース | |
| リポジトリ | |
| 書かれた | ジャワ |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | ユニットテストツール |
| ライセンス | Apacheライセンス2.0 [ 2 ] |
| Webサイト | テスト |
TestNGは、 Cédric Beustによって開発され、 JUnitとNUnitにインスピレーションを得たJavaプログラミング言語用のテストフレームワークです。TestNGの設計目標は、ユニットテスト、機能テスト、エンドツーエンドテスト、統合テストなど、より幅広いテストカテゴリを、より強力で使いやすい機能でカバーすることです。
特徴
TestNG の主な機能は次のとおりです。
- 注釈のサポート。
- データ駆動型/パラメータ化テストのサポート(
@DataProviderXML 構成を使用)。 - 同じテストクラスの複数インスタンスのサポート(
@Factory) - 柔軟な実行モデル。TestNGは、build.xml(テストスイートの定義の有無にかかわらず)を介してAntで実行することも、視覚的な結果を表示するIDEプラグインで実行することもできます。
TestSuiteクラスは存在せず、実行するテストスイート、グループ、およびテストはXMLファイルで定義および設定されます。 - 同時テスト: さまざまなポリシー (すべてのメソッドを独自のスレッドにする、テスト クラスごとに 1 つのスレッドなど) を使用して、任意の大きさのスレッド プールでテストを実行し、コードがマルチスレッド セーフかどうかをテストします。
- さらなる柔軟性のためにBeanShellを埋め込みます。
- ランタイムおよびログ記録用のデフォルトのJDK関数 (依存関係なし)。
- アプリケーション サーバー テスト用の依存メソッド。
- 分散テスト: スレーブ マシン上でのテストの分散を可能にします。
データプロバイダー
TestNG のデータ プロバイダーはテスト クラス内のメソッドであり、依存するテスト メソッドにさまざまな実際の値の配列を提供します。
例:
//このメソッドは、データプロバイダーの名前が「provider1」であると宣言するすべてのテストメソッドにデータを提供します。@DataProvider ( name = "provider1" ) public Object [][] createData1 () { return new Object [][] { { "Cedric" , new Integer ( 36 ) }, { "Anne" , new Integer ( 37 ) } }; }// このテストメソッドは、データが「provider1」という名前のデータプロバイダーによって提供されることを宣言します。@Test ( dataProvider = "provider1" ) public void verifyData1 ( String n1 , Integer n2 ) { System.out.println ( n1 + " " + n2 ); }// パラメータ配列の反復子を返すデータプロバイダ。@DataProvider ( name = "provider2" ) public Iterator < Object []> createData () { return new MyIterator (...); }// java.lang.reflect.Method 型の引数を持つデータ プロバイダー。//複数のテスト メソッドが同じプロバイダーを使用し、どのテスト メソッドを提供しているかに応じて異なる値を返すようにしたい場合に特に便利です。 @DataProvider ( name = "provider3" ) public Object [][] createData ( Method m ) { System . out . println ( m . getName ()); return new Object [][] { new Object [] { "Cedric" } }; }データ プロバイダーの返される型は、次の 2 つの型のいずれかになります。
- オブジェクトの配列の配列 (
Object[][])。最初の次元のサイズはテスト メソッドが呼び出される回数であり、2 番目の次元のサイズには、テスト メソッドのパラメーターの型と互換性がある必要があるオブジェクトの配列が含まれます。 - 。Iterator
Iterator<Object[]>との唯一の違いObject[][]は、Iterator を使用するとテストデータを遅延生成できることです。TestNG は、まずイテレータを呼び出し、次にこのイテレータから返されたパラメータを 1 つずつ使用してテストメソッドを実行します。これは、メソッドに渡すパラメータセットが多数あり、すべてを事前に作成したくない場合に特に便利です。
ツールサポート
TestNGは、 Eclipse、IntelliJ IDEA、NetBeansという3つの主要なJava IDEのそれぞれで、標準またはプラグイン経由でサポートされています。また、 Apache Ant用のカスタムタスクも付属しており、 Mavenビルドシステムでもサポートされています。Hudson継続的インテグレーションサーバーはTestNGのサポートを組み込んでおり、テスト結果を 経時的に追跡およびグラフ化できます。CoberturaなどのほとんどのJavaコードカバレッジツールは、TestNGとシームレスに連携します。
注:Eclipse向けのTestNGサポートは、Eclipseバージョン2018-09(4.9)までのみEclipse Marketplaceに組み込まれています。それ以降のバージョンのEclipseでは、TestNGサイトの指示に従って手動でTestNGをインストールする必要があります。[ 3 ]
報告
TestNGはHTMLおよびXML形式でテストレポートを生成します。XML出力はAnt JUnitReportタスク[ 4 ]によって変換され、JUnitを使用した場合と同様のレポートを生成することができます。バージョン4.6以降、TestNGはReportNG [ 6 ]、 PDFngreport [ 7 ]、TestNG-XSLT [ 8 ]などのサードパーティ製レポートジェネレーターを使用できるようにする レポーターAPI [ 5 ]も提供しています。
JUnitとの比較
TestNGはJUnitテスト自動化フレームワークと長年ライバル関係にあります。それぞれに違いがあり、それぞれの利点があります。Stack Overflowでの議論はこの論争を反映しています。[ 9 ] [ 10 ] [ 11 ]
注釈
JUnit 5では、@BeforeAllメソッドと@AfterAllメソッドはほとんどの場合staticとして宣言する必要があります。[ 12 ] TestNGにはこの制約はありません。
TestNGには、テストスイートとグループ用の4つの追加のセットアップ/ティアダウンアノテーションペアが含まれています。@BeforeSuite、@AfterSuite、@BeforeTest、@AfterTest、@BeforeGroup、@AfterGroup、@BeforeMethod、@AfterMethodです。TestNGは、Seleniumを使用したアプリケーションのテスト自動化もサポートしています。
パラメータ化テスト
パラメータ化されたテストは両方のツールで実装されていますが、その方法はまったく異なります。
TestNGには、テストメソッドにさまざまなパラメータ値を提供する2つの方法があります。testng.xmlを設定する方法と、 @DataProviderメソッドを定義する方法です。[ 13 ]
JUnit 5では、@ParameterizedTestアノテーションによってパラメータ化テストが可能になります。このアノテーションは、@ValueSourceや@EnumSourceといった、パラメータ化された引数のソースを宣言する別のアノテーションと組み合わせて使用されます。 @ArgumentsSourceを使用することで、より動的なテストを実装できますArgumentsProvider。[ 14 ] JUnit 4では、@RunWithと@Parametersがパラメータ化テストを容易にするために使用されます。@ParametersList[]メソッドは、テストクラスのコンストラクタに渡されるパラメータ化された値を含むテストを 返す必要があります。
結論
ユーザーによってフレームワークの特定の機能を好む場合が多いです。JUnitはより広く普及しており、主流のIDEにデフォルトで搭載されていることが多いです。TestNGは、追加の設定オプションと様々なテストに対応できることで知られています。どちらが適しているかは、使用状況と要件によって異なります。
参照
参考文献
- ^ | プロジェクトのGitHubリリースページ
- ^ 「Apache License Version 2.0」 。2004年1月。2013年12月21日時点のオリジナルよりアーカイブ。
- ^ 「Eclipse 用 TestNG」。
- ^ JUnitReport 2010年2月24日アーカイブ、 Wayback Machine
- ^ “TestNG 4.6の発表” . 2010年12月12日時点のオリジナルよりアーカイブ。2010年3月4日閲覧。
- ^ ReportNG 1.0 最終リリース
- ^ PDFngreport 1.0.0
- ^ TestNG XSL レポート
- ^ 「Junit と TestNG」。stackoverflow.com。
- ^ 「JUnit vs TestNG」 . stackoverflow.com. 2014年2月2日時点のオリジナルよりアーカイブ。
- ^ 「今、Java で学ぶべき UnitTest フレームワークはどれですか?」。stackoverflow.com。
- ^ 「テストの書き方 - 注釈」 . junit.org .
- ^ 「TestNG とは何ですか?」 qacreators.com。
- ^ 「JUnit 5 ユーザーガイド」 . junit.org .