Ваша проблема очень распространена.В идеальном мире TDD каждый тест должен выполняться в полной изоляции от другого теста.Вы нарушили изоляцию, и в этом проблема.
Однако простого решения проблемы изоляции теста не существует.Основная причина в том, что SQL DLL не поддерживает создание / удаление базы данных, в то время как автоматическое удаление таблиц затруднено из-за возможных сложных ограничений внешних ключей.
По моему опыту, лучшая идея - выполнить тесты внутри транзакции иОткат данных в конце теста (как и предложил Паскаль). Spring test module предоставляет отличную поддержку для этого.
Если вы не можете выполнить тест в границах транзакции (как у вас), вы должны быть уверены, что каждый ваш тест ничего не оставляет вбаза данных (включая внешние ключи, ограничения, последовательности и т. д.), а также то, что тесты предназначены для того, чтобы быть независимыми друг от друга (например, не зависеть от автоматически сгенерированного значения идентификатора, поскольку генерация последовательности могла выполняться в предыдущих тестах).
Вы должны отладить свой тестовый сеанс Maven , чтобы проверить, что не так с утверждением (я полагаю, что вы не можете сказать это из журналов Surefire).Затем зафиксируйте тесты (как провальные, так и другие, которые оставляют мусор в БД), чтобы они были изолированы друг от друга.