Интеграционные тесты с использованием базы данных
1. Что такое интеграционные тесты?
Интеграционные тесты проверяют работу нескольких компонентов вместе, включая взаимодействие с внешними системами, такими как базы данных, REST API и т. д. Spring предлагает инструменты для упрощения тестирования с использованием реальной базы данных.
2. Интеграционные тесты с PostgreSQL
Чтобы протестировать взаимодействие с базой данных, можно использовать тестовую базу данных (например, H2) или реальную базу данных, такую как PostgreSQL.
Добавьте зависимости: В pom.xml:
Настройте application-test.properties:
Пример теста:
3. Использование @Sql для предустановки данных
Вы можете использовать SQL-скрипты для подготовки данных перед тестами.
Пример test-data.sql:
#Java #Training #Spring #Testing #Mockito #IntegrationTests
1. Что такое интеграционные тесты?
Интеграционные тесты проверяют работу нескольких компонентов вместе, включая взаимодействие с внешними системами, такими как базы данных, REST API и т. д. Spring предлагает инструменты для упрощения тестирования с использованием реальной базы данных.
2. Интеграционные тесты с PostgreSQL
Чтобы протестировать взаимодействие с базой данных, можно использовать тестовую базу данных (например, H2) или реальную базу данных, такую как PostgreSQL.
Добавьте зависимости: В pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>test</scope>
</dependency>
Настройте application-test.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=test
spring.datasource.password=test
spring.jpa.hibernate.ddl-auto=update
Пример теста:
@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
@Transactional
public class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
public void testSaveAndFindUser() {
// Создаём пользователя
User user = new User();
user.setName("John");
user.setEmail("john@example.com");
// Сохраняем пользователя
userRepository.save(user);
// Проверяем, что он сохраняется и извлекается
Optional<User> foundUser = userRepository.findById(user.getId());
Assertions.assertTrue(foundUser.isPresent());
Assertions.assertEquals("John", foundUser.get().getName());
}
}
3. Использование @Sql для предустановки данных
Вы можете использовать SQL-скрипты для подготовки данных перед тестами.
@Sql(scripts = "/test-data.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
@SpringBootTest
public class SqlTest {
@Autowired
private UserRepository userRepository;
@Test
public void testWithSqlData() {
Optional<User> user = userRepository.findByName("PreloadedUser");
Assertions.assertTrue(user.isPresent());
}
}
Пример test-data.sql:
INSERT INTO users (id, name, email) VALUES (1, 'PreloadedUser', 'user@example.com');
#Java #Training #Spring #Testing #Mockito #IntegrationTests