私は困惑しています。オンラインで多くのスレッドを読みましたが、探している解決策が見つからないようです。
私が望むのは、あるテストがデータを生成し、他のテストがデータを消費するように、テストをループで並行して実行することです。
渡された ITestContext は、テスト間のテスト データの保存に役立つことがわかりました。ただし、dependsOnMethod を使用すると、最初の依存関係メソッドが実行される前に、すべてのデータ生成テストが実行されます。
私が望むものを達成するために @Factory と @DataProvider の組み合わせを指定する方法はありますか?
public class DependencyTest1 {
private String value;
@DataProvider()
public static Object[][] DependencyTestProvider() {
return new Object[][] {
// Data passed into tests
{ "String1" },
{ "String2" },
};
}
@Factory(dataProvider = "DependencyTestProvider")
public DependencyTest1(String value) {
System.out.println("DataDependencyTest1 Constructor");
System.out.println("String: " + value);
this.value = value;
}
//*****************************************************************************
//*****************************************************************************
@Test(description = "Test Dependency Injection: Generate Test Data", groups = "unit")
public void Test_DependencyInjection_GenerateTestData(ITestContext context, Method method) throws Exception {
System.out.println("Test Name: " + method.getName());
System.out.println("Create Test Data");
System.out.println("String: " + value);
System.out.println("Add data to current test context");
context.setAttribute("value", value);
}
//*****************************************************************************
//*****************************************************************************
@Test(description = "Test Dependency Injection: Extract Test Data",groups = "unit", dependsOnMethods = "Test_DependencyInjection_GenerateTestData")
public void Test_DependencyInjection_ExtractData(ITestContext context, Method method) {
System.out.println("Test Name: " + method.getName());
System.out.println("Extract data from test context");
String value = (String) context.getAttribute("value");
System.out.println("String: " + value);
}
}
テスト出力:
DataDependencyTest1 コンストラクター
文字列: デフォルトのテスト名
DataDependencyTest1 コンストラクター
文字列: 文字列 1
DataDependencyTest1 コンストラクター
文字列: 文字列 2
テスト名: Test_DependencyInjection_GenerateTestData
作成 テスト データの作成
文字列: 文字列 1
現在のテスト コンテキストにデータを追加する
テスト名: Test_DependencyInjection_GenerateTestData
作成 テスト データの作成
文字列: 文字列 2
現在のテスト コンテキストにデータを追加する
テスト名: Test_DependencyInjection_ExtractData
テスト コンテキストからデータを抽出する
文字列: 文字列 2
テスト名: Test_DependencyInjection_ExtractData
テスト コンテキストからデータを抽出する
文字列: 文字列 2
ここで問題が...
テストは、テスト メソッドが実行_ExtractData()
されるたびに for を実行します。_GenerateTestData()
ただし、依存関係テストは、ループの最後の繰り返しでのみ実行されるようです。
次のようなテスト シーケンスを作成するにはどうすればよいですか。
Test_DependencyInjection_GenerateTestData -- "String1" を使用
Test_DependencyInjection_ExtractData -- 「String1」を使用
Test_DependencyInjection_GenerateTestData -- 「String2」を使用
Test_DependencyInjection_ExtractData -- 「String2」を使用