Mam klasy testowej z wieloma metodami, gdzie każdy z nich ma dość dostawcy danych równoległych. Chcę osiągnąć mieszaną kolejność wykonywania metod, ale nie mogę kontrolować wielkości puli wątków dostawcy danych - jest ona mulitplicated pod względem liczby metod testowania. Proszę zobaczyć przykład:TestNG Suite z równoległym DataProvider i losową kolejnością metod - jak osiągnąć?
Moja definicja zestaw testowy:
<suite data-provider-thread-count="5" parallel="methods" preserve-order="false" name="Data provider problem">
Moja klasa 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();
}
Przy takiej konfiguracji zestawu testów udało mi się osiągnąć, że egzekucje test1()
i test2()
są mieszane, ale dane Pula wątków dostawcy to nie 5, ale 10! Dodanie nowych metod testowych zwielokrotnia liczbę wątków. Jest to dla mnie zaskakujące, ponieważ strona z dokumentacją testNg mówi: "Równolegliwi dostawcy danych działający z pliku XML dzielą tę samą pulę wątków". Czy po prostu używam niesłusznie atrybutu "równoległego"? Jeśli tak, czy możliwe jest osiągnięcie mojego celu (mieszana kolejność realizacji metod wraz z dostawcami danych) w inny sposób?
Próbowałem również użyć jednego dostawcę danych i tworzenie danych testowych na podstawie wtryskiwanego metody badania, ale to nie pomaga, patrz poniżej:
@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;
}
Wciąż dostaję 10 egzekucje testowe uruchomione równolegle . Przenoszenie metod dostawcy danych w celu oddzielenia klasy również nie pomaga.
Proszę zobaczyć moją odpowiedź na następujące pytanie: https://stackoverflow.com/a/46156794/4178795 – sanitar4eg