Моя цель - очистить() мой javax.persistence.EntityManager после каждого метода тестирования.
Вот пример тестового класса:
public class Example
{
@Test(dataProvider = "sampleDataProvider")
public void testA(String parameter)
{
System.out.println(parameter);
}
@Test(dataProvider = "sampleDataProvider")
public void testB(String parameter)
{
System.out.println(parameter);
}
}
EntityManager используется в dataProvider "sampleDataProvider" путем запроса к базе данных тестовых данных, которые затем компилируются в следующем формате: new Object[2][1]
. Имейте в виду, что запросы и компиляция данных выполняются до фактического запуска тестового метода (с аннотацией @DataProvider), и что мы фактически запрашиваем сущности, а не только строки.
Приведенный выше тестовый класс будет работать так:
testA("some queried entity 1")
testA("some queried entity 2")
testB("some queried entity 1")
testB("some queried entity 2")
Моим первоначальным решением было использовать аннотацию @AfterTest
для очистки entityManager. Однако он отсоединит "some queried entity 2"
от entityManager до второго запуска (или второго тестового экземпляра) testA
и testB
, что вызовет проблемы при операциях чтения/записи для членов "some queried entity 2"
.
Моя цель — очистить entityManager после тестового метода, а не обязательно после каждого экземпляра тестового метода.
Позволяет ли TestNG узнать, какой тест будет запущен дальше? Таким образом, я мог бы легко очистить entityManager, если следующий тест будет новым.
Любые другие рекомендации?