私はいくつかのメソッドを持つテストクラスを用意しています。それぞれのクラスはパラレルデータプロバイダにうんざりしています。私はメソッドの実行の混在した順序を達成したいが、私はデータプロバイダのスレッドプールのサイズを制御することはできません - テストメソッドの数によって多元化されています。このようなテストスイートの私はtest1()
とtest2()
の実行が混在していることを達成している設定が、データでパラレルDataProviderとランダムな順序のメソッドを持つTestNGスイート - どのように達成するのですか?
@Test(dataProvider = "dp1")
public void test1(TestData testData) { }
@Test(dataProvider = "dp2")
public void test2(TestData testData) { }
@DataProvider(name = "dp1", parallel = true)
public static Object[][] dp1() {
return createTestData1();
}
@DataProvider(name = "dp2", parallel = true)
public static Object[][] dp2() {
return createTestData2();
}
:
私のテストスイートの定義:
<suite data-provider-thread-count="5" parallel="methods" preserve-order="false" name="Data provider problem">
私のテストクラスの例を参照してくださいプロバイダスレッドプールは5ではなく10です!新しいテストメソッドを追加すると、スレッド数が増えます。 testNgのドキュメンテーションサイトでは、「XMLファイルから実行するパラレルデータプロバイダは、同じスレッドプールを共有しています。私は間違ってスイートの '並列'属性を使用していますか?もしそうなら、私の目標(データプロバイダと一緒にメソッドの実行を混在させる)を他の手段で達成することは可能でしょうか?
下記を参照してください、私はまた、1つのデータプロバイダを使用し、注入された試験法に基づいてテストデータを作成しようとしたが、それはどちらか助けていません:
@Test(dataProvider = "dp")
public void test1(TestData testData) { }
@Test(dataProvider = "dp")
public void test2(TestData testData) { }
@DataProvider(name = "dp", parallel = true)
public static Object[][] dp(Method m) {
if (m.getName().equals("test1")) {
return createTestData1();
}
if (m.getName().equals("test2")) {
return createTestData2();
}
return null;
}
それでも私は平行に走る10のテスト実行を取得。クラスを分離するためにデータプロバイダメソッドを移動することは役に立ちません。
次の質問に対する私の答えをご覧ください。https://stackoverflow.com/a/46156794/4178795 – sanitar4eg