Как я могу загрузить базу данных с TestPropertySource только один раз и использовать ее в нескольких классах тестирования? - PullRequest
0 голосов
/ 18 октября 2019

У меня есть тестовый класс, который использует @TestPropertySource для загрузки hsqldb.

По сути, тестовый файл стал довольно большим, и я хотел бы его немного разбить. Проблема в том, что загрузка БД занимает ... некоторое время. Не слишком много, но я не хочу создавать несколько тестовых файлов, каждый из которых загружает БД.

Мой код выглядит следующим образом:

@TestPropertySource(properties = {
        "hsqldb.name=SettingsTest"
})
@ContextConfiguration(classes = { settings.config.Config.class }, loader = AnnotationConfigContextLoader.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
public class SvcTest
.
.
.

Это позволит запустить некоторые функции для загрузки базы данных. Насколько я понимаю, когда тестовый файл будет завершен со всеми его тестами, он остановит БД. Как я могу сохранить его работоспособным, чтобы другие файлы могли использовать БД, и закрывать его только тогда, когда они сделаны?

1 Ответ

1 голос
/ 20 октября 2019

Попытка кэшировать контекст приложения между классами тестов, в то же время помечая тесты как «грязные», используя @DirtiesContext, немного противоречиво:

DirtiesContext:Тестовая аннотация, которая указывает, что ApplicationContext, связанный с тестом, является грязным и поэтому должен быть закрыт и удален из кеша контекста.

Если вы используете аннотацию исключительно для сброса состояния вашей базы данных, вы можете вместо этого создать ClassRule, чтобы вручную сбросить тестовые данные в базе данных вместо того, чтобы разбирать их на части. и восстановление полного контекста приложения.

Кроме того, если тесты сосредоточены на разделе репозитория приложения, Spring предлагает test slicing. Тестовые фрагменты загружают небольшой фрагмент контекста приложения, тем самым сокращая время загрузки. Примером является аннотация @JdbcTest, используемая для тестов JDBC, ориентированных на компоненты на основе JDBC.

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