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

Как протестировать базу данных

Для тестирования базы данных в Java можно использовать несколько подходов:

  1. Интеграционные тесты с тестовой БД (H2, SQLite) или контейнерами (Testcontainers):
java
@Testcontainers
class UserRepositoryTest {
    @Container
    static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:15");

    @Test
    void shouldSaveUser() {
        // Настройка DataSource с postgres.getJdbcUrl()
        UserRepository repo = new UserRepository(dataSource);
        User user = new User("test");
        repo.save(user);
        assertNotNull(repo.findById(user.getId()));
    }
}
  1. Мокирование DAO/репозиториев (Mockito):
java
@Mock UserDao userDao;
@Test
void testFindUser() {
    when(userDao.findById(1L)).thenReturn(new User(1L, "John"));
    // Тестируем сервис, использующий userDao
}
  1. In-memory БД для быстрых тестов:
java
@BeforeEach
void setup() {
    DataSource ds = new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .addScript("schema.sql")
        .build();
    repository = new UserRepository(ds);
}

Ключевые моменты:

  • Изолируйте тесты (rollback транзакций)
  • Используйте фикстуры для начальных данных
  • Проверяйте не только успешные сценарии, но и ошибки
  • Для сложных запросов проверяйте сгенерированный SQL
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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