TestNG: использовать ApplicationContext в нескольких тестовых классах - PullRequest
0 голосов
/ 27 сентября 2011

Я написал несколько тестов в одном TestNG Test, который расширяет AbstractTestNGSpringContextTests. ApplicationContext правильно настроен, и я могу использовать его в своих тестовых примерах.

Проблема в том, что настройка applicationContext может занять некоторое время, и я не хочу делать это для каждого тестового класса, который у меня есть, так как это займет некоторое время, которое с моей точки зрения не нужно.

Итак, мой вопрос: возможно ли запустить несколько тестовых классов TestNG, используя один и тот же Spring ApplicationContext, который настроен только один раз?

Спасибо и всего наилучшего, Роберт

Ответы [ 3 ]

1 голос
/ 02 октября 2011

Spring может кэшировать и повторно использовать ApplicationContext, когда вы используете подобные locations в @ContextConfiguration аннотациях.См. Статью по теме от Томаша Нуркевича (@ tomasz-nurkiewicz) по адресу http://nurkiewicz.blogspot.com/2010/12/speeding-up-spring-integration-tests.html

1 голос
/ 29 сентября 2011

Как насчет использования @BeforeSuite?

0 голосов
/ 03 января 2018

Когда платформа TestContext загружает ApplicationContext (или WebApplicationContext) для теста, этот контекст будет кэшироваться и повторно использоваться для всех последующих тестов, которые объявляют ту же уникальную конфигурацию контекста в том же наборе тестов.

SpringПлатформа TestContext хранит контексты приложения в статическом кэше.Это означает, что контекст буквально хранится в статической переменной.Другими словами, если тесты выполняются в отдельных процессах, статический кеш будет очищаться между каждым выполнением теста, и это эффективно отключит механизм кэширования.

Чтобы воспользоваться механизмом кэширования, все тесты должны выполняться в одном и том жепроцесс или набор тестов.Этого можно достичь, выполнив все тесты как группу в среде IDE.Аналогичным образом, при выполнении тестов с помощью инфраструктуры сборки, такой как Ant, Maven или Gradle, важно убедиться, что среда сборки не развивается между тестами.Например, если для forkMode для подключаемого модуля Maven Surefire задано всегда или pertest, инфраструктура TestContext не сможет кэшировать контексты приложения между тестовыми классами, и в результате процесс сборки будет работать значительно медленнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...