Встречается на собеседованиях • сегодня
Подключал ли базу данных к 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).

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