У меня есть набор TestNG, определяющий такой тест:
<test parallel="none">
<packages>
<package name="com.acme.tests.sanity" />
<package name="com.acme.tests.other" />
</packages>
</test>
Классы содержат методы, которые зависят друг от друга следующим образом:
@Test
public void someInitialization() {...}
@Test(dependsOnMethods="someInitialization")
public void someVerification() {...}
@Test(dependsOnMethods="someVerification")
public void andAnotherVerification() {...}
Во время инициализации мы запускаем мобильное приложение , войдите в систему и выполните настройку на уровне приложения, все это займет ~ 2 минуты, поэтому я предпочитаю инициализировать один раз для каждого класса и запускать несколько зависимых тестов.
Проблема в том, что наш поставщик мобильных эмуляторов не любит зомб ie устройств из-за ленивых или зависших тестов. И время от времени мы получаем ошибку «сессия уже закрыта».
После анализа журналов я обнаружил, что выполнение методов одного класса чередуется с выполнением методов из другого класса, и поскольку все выполняется В основном потоке сеанс эмулятора из предыдущего метода истекает из-за этого чередования.
Чтобы сделать вещи более ясными, журнал для двух классов A и B, каждый из которых имеет несколько взаимозависимых методов, выглядит следующим образом:
03:29:21.035 [DEBUG] [A:m1]: m1 finished leaving on open WebDriver and for further methods
03:29:21.330 [INFO ] [B:m2]: here is other method from other class !!!!!! which runs for several minutes
03:37:11.334 [INFO ] [A:m2]: m2 depends on m1, but TestNG does not "think" it should run right away -- hence it gets a dead WebDriver
Я пытался добавить group-by-instances="true"
в тест, но все еще вижу чередование классов.
Есть предложения?