Запуск контекстного теста Spring с использованием Programatic TestNG

1

Я хочу, чтобы программа интеграции была интегрирована с помощью TestNG API

Я понял, что это можно сделать, используя

TestListenerAdapter tla = new TestListenerAdapter();
org.testng.TestNG testng = new org.testng.TestNG();
testng.setTestClasses(new Class[] { SomeTest.class });
testng.addListener(tla);
testng.run();

Теперь в классе SomeTest у меня есть весенний ресурс. Я инициализировал контекст весны, но кажется, что, когда TestNG запускает класс, он создает новый экземпляр класса SomeTest.class сам по себе и не обязательно использует Spring, а затем все Autowiring, которое произошло через весенний контейнер, и тег @Autowired теряется, (Это то, что моя первоначальная догадка, и я могу ошибаться)

Есть ли способ, которым я могу запускать тесты, чтобы TestNG получал экземпляр через контекст Spring.

Теги:
spring
testng

1 ответ

2
Лучший ответ

Вы должны принять тестовую зависимость от SpringTest и использовать одно из решений из своей тестовой документации.

@ContextConfiguration(locations = { "classpath:spring-test-config.xml" })
public class SomeSpringTest extends AbstractTestNGSpringContextTests {
    @Autowired
    private SomeClass someClass;

    @Test
    public void someTest() {
        ...
    }
}

Если вам нужна поддержка транзакций, вы можете использовать AbstractTransactionalTestNGSpringContextTests. Вот соответствующий фрагмент из их документации о доступе к applicationContext в AbstractTestNGSpringContextTests:

AbstractTestNGSpringContextTests - это абстрактный базовый тестовый класс, который объединяет Spring TestContext Framework с явной поддержкой тестирования ApplicationContext в среде TestNG. Когда вы расширяете AbstractTestNGSpringContextTests, вы можете получить доступ к защищенной переменной экземпляра приложенияContext, которая может использоваться для выполнения явного поиска в бинах или для проверки состояния контекста в целом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню