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

Подключал ли базу данных к Unit-тестам

Да, подключал. Для тестирования с реальной БД часто используют тестовые контейнеры (Testcontainers) или in-memory БД, например H2.

Пример с H2:

java
@Test
public void testUserRepository() {
    // Настройка H2 в памяти
    DataSource dataSource = new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.H2)
        .addScript("schema.sql")
        .build();
text
UserRepository repo = new UserRepository(dataSource);
User user = repo.save(new User("test@example.com"));
assertNotNull(user.getId());

}

text

**Testcontainers (PostgreSQL):**  
```java
@Testcontainers
class UserRepositoryTest {
    @Container
    private static final PostgreSQLContainer<?> postgres = 
        new PostgreSQLContainer<>("postgres:15");

    @Test
    void testWithRealDb() {
        DataSource ds = DataSourceBuilder.create()
            .url(postgres.getJdbcUrl())
            .username(postgres.getUsername())
            .password(postgres.getPassword())
            .build();
        
        // Тестируем репозиторий
    }
}

Важно:

  • Тесты с БД медленнее, их лучше выносить в отдельную категорию (например, @IntegrationTest).
  • Для изоляции можно транзакции с @Transactional или ручную очистку (@AfterEach).
  • In-memory БД могут отличаться от продакшн-БД в деталях (например, диалекты SQL).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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