В тестах остаются старые записи и получаю Unique index or primary key violation
У меня есть несколько интеграционных тестов для слоя service и controller. Вот для слой service.
@SpringBootTest
@Rollback(true)
public class UserServiceIntTest {
@Mock
private UserRepository userRepository;
@Autowired
private UserService userService;
@Test
public void saveUser_shouldOK() {
var result = userService.create(User_01);
assertThat(result, notNullValue());
assertThat(result.getUserName(), is("UserName-01"));
...
}
@Test
public void updateUser_shouldOK() {
var result = UserService.create(User_01);
...
}
...
В каждом методе я предварительно создаю одного или нескольких пользователей в БД (User_01, User_02, ...). Если запускать по одному тесту, то все проходит без ошибок. Но когда запускаю все тесты разом, то получаю Unique index or primary key violation.
Причина в том, что поле name помечено как Unique. И получается, что в момент выполнения очередного теста, когда я пытаюсь создать новую запись в БД, там уже существует такая же запись.
Хотя по умолчанию RollBack = true, т.е. все записи должны откатываться. Но логи показывают, что при запуске saveUser_shouldOK перед добавлением новой записи там уже есть такая запись.
Перед запусками тестов проверил, в БД нет ни одной записи, т.е. отсутствует ее инициализация данными из другого места. Я уже явно добавил аннотацию @Rollback(true), но проблема так и осталась.
Почему так происходит и как это победить?