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

Проверял ли Unit-тесты при работе с базами данных

Unit-тесты не должны напрямую взаимодействовать с реальной БД, так как это замедляет их выполнение и делает результаты нестабильными. Вместо этого используют:

  1. Моки/стабы (Mockito, EasyMock) для имитации DAO/репозиториев
  2. In-memory БД (H2, SQLite) для интеграционных тестов
  3. Testcontainers для поднятия изолированных контейнеров с БД в тестах

Пример с Mockito:

java
@Test
void testUserService() {
    UserRepository mockRepo = mock(UserRepository.class);
    when(mockRepo.findById(1L)).thenReturn(new User(1L, "test"));
    
    UserService service = new UserService(mockRepo);
    User user = service.getUser(1L);
    
    assertEquals("test", user.getName());
    verify(mockRepo).findById(1L);
}

Для тестов с реальной БД лучше использовать интеграционные тесты (@SpringBootTest) с тестовой БД, которая очищается перед каждым тестом.

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

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

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

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