Встречается на собеседованиях • сегодня

Как решишь проблему неконсистентности базы данных при нелокальным использовании базы данных с Unit-тестами

Для решения проблемы неконсистентности в тестах:

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

Лучшая практика - комбинировать эти подходы в зависимости от типа тестов.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы