Testng-dependency-test
TestNG-依存関係テスト
テストケース内のメソッドを特定の順序で呼び出す必要がある場合や、メソッド間でデータと状態を共有したい場合があります。 この種の依存関係は、テストメソッド間の明示的な依存関係の宣言をサポートするため、TestNGでサポートされています。
TestNGでは、次のいずれかの方法で依存関係を指定できます-
- @Testアノテーションで属性_dependsOnMethods_を使用、または。
- @Testアノテーションで_dependsOnGroups_属性を使用します。
_dependsOnMethods_を使用した例
クラスを作成する
テストケースクラスを作成する
DependencyTestUsingAnnotation.javaなどのJavaテストクラスを作成します。
テストクラスにテストメソッドtestPrintMessage()とtestSalutationMessage()、およびinitEnvironmentTest()を追加します。
属性 dependsOnMethods = \ {"initEnvironmentTest"} を* testSalutationMessage()*メソッドの@Testアノテーションに追加します。
testng.xmlを作成する
javacを使用して、MessageUtil、テストケースクラスをコンパイルします。
次に、testng.xmlを実行します。これは、initEnvironmentTest()メソッドの実行後にのみtestSalutationMessage()メソッドを実行します。
出力を確認します。
_dependsOnGroups_を使用した例
グループ全体に依存するメソッドを持つこともできます。 これを実証する例があります。
クラスを作成する
テストケースクラスを作成する
DependencyTestUsingAnnotation.javaなどのJavaテストクラスを作成します。
テストメソッド、testPrintMessage()、testSalutationMessage()、およびinitEnvironmentTest()をテストクラスに追加し、それらをグループ「init」に追加します。
属性* dependsOnMethods = \ {"init。"} *を testSalutationMessage()*メソッドの@Testアノテーションに追加します。
この例では、testSalutationMessage()はグループに依存するものとして宣言され、「init。*」という正規表現と一致します。これにより、testSalutationMessage()の前にtestPrintMessage()およびinitEnvironmentTest()メソッドが常に呼び出されます。
依存するメソッドが失敗し、それに強い依存関係がある場合(alwaysRun = false、デフォルト)、それに依存するメソッドはFAILではなくSKIPとしてマークされます。 スキップされたメソッドは最終レポートでそのように報告されます(HTMLで赤でも緑でもない色で)。これは、スキップされたメソッドが必ずしも失敗ではないため重要です。
testng.xmlを作成する
javacを使用して、MessageUtil、テストケースクラスをコンパイルします。
次に、testinit.xmlを実行します。これは、_initEnvironmentTest()_メソッドの実行後にのみ_testSalutationMessage()_メソッドを実行します。
出力を確認します。
dependsOnGroups_対_dependsOnMethods
- グループを使用すると、リファクタリングの問題にさらされなくなります。 dependOnGroupsまたはgroups属性を変更しない限り、適切な依存関係を設定してテストを実行し続けます。
- 依存関係グラフに新しいメソッドを追加する必要があるときはいつでも、適切なグループにそれを配置し、正しいグループに依存することを確認するだけです。 他の方法を変更する必要はありません。