Ho una classe di test con un numero di metodi, in cui ognuno di loro è stufo del provider di dati parallelo. Voglio ottenere un ordine misto di esecuzione dei metodi, ma non riesco a controllare le dimensioni del pool di thread del fornitore di dati, ma è moltiplicato per il numero di metodi di test. Si prega di vedere l'esempio:TestNG suite con DataProvider parallelo e ordine casuale dei metodi: come ottenere?
La mia definizione suite di test:
<suite data-provider-thread-count="5" parallel="methods" preserve-order="false" name="Data provider problem">
La mia classe di test:
@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();
}
Con tale configurazione suite di test ho ottenuto che le esecuzioni di test1()
e test2()
sono mescolati, ma i dati pool di thread del provider non è 5, ma 10! L'aggiunta di nuovi metodi di test consente di moltiplicare il numero di thread. Per me è sorprendente come afferma il sito di documentazione testNg: "I provider di dati paralleli in esecuzione da un file XML condividono lo stesso pool di thread". Sto usando erroneamente l'attributo 'parallelo' della suite? In tal caso, è possibile raggiungere il mio obiettivo (ordine misto di esecuzione dei metodi insieme ai fornitori di dati) con altri mezzi?
Ho anche provato ad utilizzare un fornitore di dati e creare dati di test sulla base del metodo di prova iniettato, ma non aiuta, vedi sotto:
@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;
}
Ancora ottengo 10 esecuzioni di prova parallele . Spostare i metodi del fornitore di dati per separare la classe non aiuta neanche.
Vedere la risposta alla seguente domanda: https://stackoverflow.com/a/46156794/4178795 – sanitar4eg