Встречается на собеседованиях • сегодня
Как решишь проблему неконсистентности базы данных при нелокальным использовании базы данных с Unit-тестами
Для решения проблемы неконсистентности в тестах:
- Используй
@Transactionalдля отката изменений после теста:
java
@Test
@Transactional
public void testUserCreation() {
// тест, изменения откатятся
}- Применяй
@DirtiesContextдля пересоздания контекста:
java
@Test
@DirtiesContext
public void testWithDbChanges() {
// контекст пересоздастся
}- Используй embedded БД (H2) для изоляции:
properties
spring.datasource.url=jdbc:h2:mem:testdb- Очищай данные перед тестом:
java
@BeforeEach
void cleanDb() {
userRepository.deleteAll();
}- Для интеграционных тестов используй Testcontainers:
java
@Testcontainers
class IntegrationTest {
@Container
static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:13");
}Лучшая практика - комбинировать эти подходы в зависимости от типа тестов.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы