Поставь брейк поинт в IDE на одном из таких тестов и посмотри куда оно ходит для повторного вызова.
Рефлекшены, упираются в testng.
Ага. Но я там только данные для тестов видел. Может не досмотрел что-то.
Как раз таки. Кол-во данных в объекте датапровайдера определяет, сколько раз будет прогнан тест, который определен с этим датапровайдером.
Т.е. задан сферический датапровайдер
@Dataprovider
public Object[][] testProvider () {
return new Object[][] {
["one", "one"],
["two", "two"]
}
}
означает, что тест пройдет два раза с наборами one one, two two
Да, так и есть. Вчера, видать, где-то глаз замылился, мне показалось что кол-во данных не совпало.
Просто проблема в том, что в родительском классе в @BeforeClass прописано делать рестарт сервера и сброс базы (шелл команды), но этот метод вызывается слишком часто. Конкретно это на бряку поставить не могу, так прогоняется на сервере, надо туда настроить отсылку команд для рестарта сервера/работу с бд.
Как пример, у здесь в одном из тестовых классов есть 2 тестовых метода (apply_achievment, claim_achievment_reward), каждый вызывается по одному разу. Но сам сброс энвайрнмента происходит 7 раз (вот этот кусок лога повторяется 7 раз):
03:09:15 [testng] [Invoker 1734982295] Keeping method Base_Test.beforeClass()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a] for class [TestClass name=class test.core.tests.Achievement_Test]
03:09:15 [testng] [Invoker 1734982295] Invoking @BeforeClass Base_Test.beforeClass()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a]
03:09:15 [testng] kill
03:09:38 [testng] start
03:12:08 [testng] [Invoker 1734982295] Keeping method Achievement_Test.beforeMethod()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a] for class [TestClass name=class test.core.tests.Achievement_Test]
03:12:08 [testng] [Invoker 1734982295] Keeping method Achievement_Test.afterMethod()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a] for class [TestClass name=class test.core.tests.Achievement_Test]
03:12:08 [testng] [Invoker 1734982295] Keeping method Achievement_Test.beforeMethod()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a] for class [TestClass name=class test.core.tests.Achievement_Test]
03:12:08 [testng] [Invoker 1734982295] Keeping method Achievement_Test.afterMethod()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a] for class [TestClass name=class test.core.tests.Achievement_Test]
03:12:08 [testng] [Invoker 1734982295] Keeping method Achievement_Test.afterClass()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a] for class [TestClass name=class test.core.tests.Achievement_Test]
03:12:08 [testng] [Invoker 1734982295] Invoking @AfterClass Achievement_Test.afterClass()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a]
03:12:08 [testng] [Invoker 1734982295] Keeping method Base_Test.beforeClass()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a] for class [TestClass name=class test.core.tests.Achievement_Test]
03:12:08 [testng] [Invoker 1734982295] Invoking @BeforeClass Base_Test.beforeClass()[pri:0, instance:test.core.tests.Achievement_Test@6bb2725a]
Для разных классов разное кол-во раз вызывается, я никакой закономерности найти не могу. Причины тоже. Всего для 300 тестов рестартится сервер 120 раз, что черезчур много. Собственно, вот с этим я и пытаюсь разобраться в данный момент.