Предположим, у нас есть тесты, написанные следующим образом (в отдельных файлах):
@SpringBootTest(classes = {SomeBeansProvider.class, FunnyCatBeansProvider.class})
public class CatsTest extends AbstractTestNGSpringContextTests {(...)}
@SpringBootTest(classes = {SomeBeansProvider.class, FunnyCatBeansProvider.class})
public class CatTest2 extends AbstractTestNGSpringContextTests {(...)}
@SpringBootTest(classes = {SomeBeansProvider.class, DogBeansProvider.class})
public class DogsTest extends AbstractTestNGSpringContextTests {(...)}
Я не хочу усложнять ситуацию, поэтому давайте пока все притворимся, что все эти тесты печатают что-то вроде "Test#no выполнение завершено. ".
Также давайте определим такой метод в SomeBeansProvider.class
@EventListener(ContextClosedEvent.class)
public void onContextClose(final ContextClosedEvent contextClosedEvent) {
log.info("Context closed.");
}
Если вы выполните эти тесты (используя RunN TestNG), вы увидите вывод консоли, подобный этому:
- Выполнение теста 1 завершено.
- Выполнение теста 2 завершено.
- Выполнение теста 3 завершено.
- Контекст закрыт.
- Контекст закрыт.
Поскольку CatTest и CatTest2 имеют идентичные контексты, для них будет создан только один, и один дополнительный для DogTest.
Проблема в том, что я хочу, чтобы контексты были закрытытолько после того, как они больше не нужны.Интересно, можно ли как-то автоматически группировать тесты во время выполнения, чтобы не было нескольких экземпляров контекста одновременно?Поэтому я хочу, чтобы выходные данные выглядели примерно так:
- Выполнение теста 1 завершено.
- Выполнение теста 2 завершено.
- Контекст закрыт.
- Выполнение теста 3 завершено.
- Контекст закрыт.
Возможно ли это?