У меня есть 2 файла спецификаций Kotlintest, в которые вводится бин CrudRepository данных Spring (поддерживаемый H2). Как часть настройки для тестов, они оба вставляют сущность с одинаковым именем. Если я запускаю спецификации по отдельности через IntelliJ, они проходят отлично. Если я бегу mvn verify
, они проходят отлично. Если я запускаю жизненный цикл проверки на вкладке maven в IntelliJ, они проходят отлично. Но если я щелкну правой кнопкой мыши по общедоступному пакету и запущу файлы спецификации в той же конфигурации запуска, то второй тест файла спецификаций не пройден, поскольку сохраненный объект уже существует. Я попытался использовать @DirtiesContext
, но это не работает (так как я предполагаю, что он подключен к junit, а не kotlintest).
Упрощенный пример:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class RestControllerOneTest(
@Autowired private val myRepository: MyRepository,
@Autowired private val testRestTemplate: TestRestTemplate
) : WordSpec() {
override fun beforeSpec(spec: Spec) {
myRepository.save(MyModel("Name"))
}
init {
"Runnning this" should {
"pass because it runs first" {
restTemplate.getForEntity("/mymodel", MyModel::class.java)
}
}
}
}
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class RestControllerTwoTest(
@Autowired private val myRepository: MyRepository,
@Autowired private val testRestTemplate: TestRestTemplate
) : WordSpec() {
override fun beforeSpec(spec: Spec) {
myRepository.save(MyModel("Name"))
}
init {
"Runnning this" should {
"pass but doesn't because it runs second" {
restTemplate.getForEntity("/myothermodel", MyModel::class.java)
}
}
}
}