Testng-parameterized-test
TestNG-パラメーター化されたテスト
TestNGで利用できるもう1つの興味深い機能は、*パラメトリックテスト*です。 ほとんどの場合、ビジネスロジックが非常に多様な数のテストを必要とするシナリオに遭遇します。 *パラメータ化されたテスト*により、開発者は異なる値を使用して同じテストを繰り返し実行できます。
TestNGでは、2つの異なる方法でテストメソッドにパラメーターを直接渡すことができます-
- testng.xmlを使用
- データプロバイダーを使用
_testng.xml_でパラメーターを渡す
この手法では、_testng.xml_ファイルで単純なパラメーターを定義し、ソースファイルでそれらのパラメーターを参照します。 この手法を使用してパラメーターを渡す方法を示す例を示します。
テストケースクラスを作成する
ParameterizedTest1.javaなどのJavaテストクラスを作成します。
テストクラスにテストメソッドparameterTest()を追加します。 このメソッドは、入力パラメーターとして文字列を取ります。
このメソッドに注釈_ @ Parameters( "myName")_を追加します。 このパラメーターにはtestng.xmlから値が渡されます。これについては次のステップで説明します。
testng.xmlを作成する
<suite>レベルでパラメーターを定義することもできます。 <suite>レベルと<test>レベルの両方で_myName_を定義したとします。 そのような場合、通常のスコープ規則が適用されます。 つまり、<test>タグ内のクラスは<test>で定義されたパラメーターの値を参照し、testng.xmlファイルの残りのクラスは<suite>で定義された値を参照します。
javacを使用してテストケースクラスをコンパイルします。
ここで、_parameterTest_メソッドを実行するtestng.xmlを実行します。 TestNGは、最初に<test>タグで_myName_という名前のパラメーターを見つけようとし、それが見つからない場合は、それを囲む<suit>タグで検索します。
出力を確認します。
TestNGは、testng.xmlで指定された値をパラメーターの型に自動的に変換しようとします。 サポートされているタイプは次のとおりです-
- ひも
- int/整数
- ブール/ブール
- バイト/バイト
- 文字/文字
- ダブル/ダブル
- フロート/フロート
- ロング/ロング
- ショート/ショート
_Dataproviders_を使用してパラメーターを渡す
複雑なパラメーターまたはJavaから作成する必要があるパラメーター(複雑なオブジェクト、プロパティファイルまたはデータベースから読み取ったオブジェクトなど)を渡す必要がある場合、Dataprovidersを使用してパラメーターを渡すことができます。
データプロバイダーは、 @ DataProvider アノテーションが付けられたメソッドです。 この注釈には、名前というストリング属性が1つだけあります。 名前が指定されていない場合、データプロバイダーの名前は自動的にメソッドの名前にデフォルト設定されます。 データプロバイダーは、オブジェクトの配列を返します。
次の例は、データプロバイダーの使用方法を示しています。 最初の例は、Vector、String、またはIntegerをパラメーターとして使用する@DataProviderについてであり、2番目の例は、オブジェクトをパラメーターとして使用する@DataProviderについてです。
例1
ここで、@ DataProviderは整数とブール値をパラメーターとして渡します。
- Javaクラスを作成 *
PrimeNumberChecker.javaというJavaクラスを作成します。 このクラスは、数値が素数かどうかを確認します。* C:\> TestNG_WORKSPACE *にこのクラスを作成します。
テストケースクラスの作成
ParamTestWithDataProvider1.javaなどのJavaテストクラスを作成します。
メソッドprimeNumbers()を定義します。これは、アノテーションを使用してデータプロバイダーとして定義されます。 このメソッドは、オブジェクトの配列を返します。
テストメソッドtestPrimeNumberChecker()をテストクラスに追加します。 このメソッドは、入力パラメーターとして整数とブール値を取ります。 このメソッドは、渡されたパラメーターが素数かどうかを検証します。
このメソッドに注釈_ @ Test(dataProvider = "test1")_を追加します。 属性dataProviderは「test1」にマップされます。
- testng.xmlを作成 *
testng.xml* C:\> TestNG_WORKSPACE *を作成して、テストケースを実行します。
javacを使用してテストケースクラスをコンパイルします。
次に、testng.xmlを実行します。
出力を確認します。
例2
ここでは、@ DataProviderはObjectをパラメーターとして渡します。
Javaクラスを作成*
テストケースクラスの作成
ParamTestWithDataProvider2.javaなどのJavaテストクラスを作成します。
注釈を使用してデータプロバイダーとして定義されているメソッドprimeNumbers()を定義します。 このメソッドは、オブジェクトの配列を返します。
テストメソッドtestMethod()をテストクラスに追加します。 このメソッドは、オブジェクトBeanをパラメーターとして受け取ります。
このメソッドに注釈_ @ Test(dataProvider = "test1")_を追加します。 属性dataProviderは「test1」にマップされます。
testng.xmlを作成*
javacを使用してテストケースクラスをコンパイルします。
次に、testng.xmlを実行します。
出力を確認します。