Testing
Common tests
Каждый тест должен содержать:
- Arrange - создание необходимого для тестирования.
- Act - выполнение тестируемых действий.
- Assert - проверка результата.
Лучше разделять тест комментариями
Unite tests quick start
Добавление зависимости
testImplementation 'org.springframework.boot:spring-boot-starter-test:3.2.3'
testImplementation 'org.mockito:mockito-core:5.10.0'
Добавление над тестируемым сервисом
@ExtendWith(MockitoExtension.class)
Тестирование repository
Аннотация на тест класс
@DataJpaTest
Подключает
- Caching
- Spring Data JPA repositories
- Flyway database migration tool
- Liquibase database migration tool
- A DataSource - The data-source will, as default, use an embedded in-memory database (test database).
- Data source transaction manager - A transaction manager for a single DataSource.
- A JdbcTemplate
- JPA based configuration for Hibernate
- Spring transaction
- A test database
- A JPA entity manager for tests
ParameterizedTest
@ParameterizedTest - аннотация для параметризованного тестирования.
@ExtendWith(SpringExtension.class)
@ExtendWith - аннотация для запуска тестов со Spring контекстом. До junit 5 использовали @RunWith(SpringRunner.class)
Integration tests quick start
Аннотации:
- @SpringBootTest - для запуска тестов со Spring приложением(не просто контекстом). Содержит @ExtendWith(SpringExtension.class).
- AutoConfigureMockMvc - для подключения тестирования REST эндпоинта.
WireMock
WireMock - инструмент для тестирования Spring приложением собственных endpoints.
- Перехват и подмена HTTP-запросов.
- Настройка ожидаемых ответов.
- Поддержка JSON, XML, и других форматов.
- Возможность запуска как отдельного сервера или встраивание в тесты (например, в JUnit).
MockMvc
MockMvc - инструмент для интеграционного тестирования Spring приложением удаленных endpoints путем подмены ответов.