Тестирование интеграции Java EE/JPA с откатом, как весной

В моем текущем проекте я использую Java EE и JPA. Теперь я сталкиваюсь с необходимостью сохранять материал и, работая на тестовой основе, пытаюсь выяснить, как проверить этот материал.

В предыдущем проекте с Spring мы использовали @Transactional(Rollback=true) для отката транзакций после каждого теста. Мы могли бы вызвать persist + flush и затем запросить, чтобы проверить, правильно ли был выполнен JPA.

Как вы делаете это элегантно (минимальная работа по настройке, наименьшее количество дополнительных ресурсов / ресурсов) в Java EE?

jeeunit выглядел как ответ, но его больше не продолжают, а объединяют в "pax exam", который обеспечивает только поддержку maven, которой у меня нет.

0 ответов

JUnit предназначен для тестирования методов, для каждого метода должно быть не менее 2 тестов: один солнечный день и один дождливый день. То, что происходит вне метода, не имеет значения. Таким образом, я бы использовал некоторую фиктивную структуру (mockito), чтобы имитировать доступ к базе данных, поскольку чтение / запись / удаление данных в базе данных происходит из любого метода.

Если вы все еще хотите протестировать консолидацию данных в базе данных, я бы использовал некоторые базы данных в памяти, такие как HSQL или H2. Это позволит создать собственную базу данных, предназначенную для тестирования. Наконец, вы должны создавать базу данных после каждого выполнения каждого тестового метода в классе junit. Для этого вы должны использовать:@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)

Это немного замедлит выполнение теста, но гарантирует независимость теста.

Другие вопросы по тегам