18 ак. ч., 6 дней.
puml
@startuml
frame frontend
frontend -> tomcat
database DB #white
database MQ #white
component [LegacyRestService] #white
frame backend {
frame tomcat {
component [SpringMVC] #white
frame spring {
component [RestTemplate] #white
component [JpaProvider] #white
component [JdbcTemplate] #white
frame "application feature" {
component [Repository] <<codegened>> #lightgray
[Controller] -> [Service]
Service -> [Repository]
Repository --> JpaProvider
JpaProvider --> JdbcTemplate
Service --> RestTemplate
RestTemplate -> LegacyRestService
}
}
component [DbConnectionPool] #white
JdbcTemplate --> DbConnectionPool
DbConnectionPool -> DB
spring ..> Controller
spring ..> Service
spring ..> Repository
spring ..> JpaProvider
}
tomcat -> SpringMVC
SpringMVC -> Controller
}
@enduml
- Структура теста
- Именования
- Проверки
- Что покрываем?
- Sprint Testing Framework: тест как injection subject
- Интеграция с JUnit5
- Тестовая конфигурация: управление контекстом
- Тестовая конфигурация: реализация компонентов
- Тестовая конфигурация: свойства
- Тест как injection subject
- Профили конфигурации
- Понятие тест-дублера
- Виды тест-дублеров: dummy, stub, fake, mock, spy
- Графы дублеров
- Реализация на Mockito
- Интеграция со Spring Testing:
@Mock
- Проблема тест-дублеров: как сделать их частью spring context, но управлять из теста?
- Проблема побочных эффектов и
@DirtiesContext
- Существующие тестовые библиотеки: Spring Testing и MockMvc
- MockMvc API (Spring MVC Test)
- WebTest Client API
- Что покрываем?
- Установка фикстуры
- Реализация REST over HTTP вызова
- Реализация утверждений
- Фейки СУБД
- Утилиты работы с JDBC
- Embedded databases support
- Аннотации
- Инициализация БД и выполнение SQL из тестов
- Управление транзакциями
- Миграция Spring Core/MVC-приложения на Spring Boot
- Чем Spring Boot помогает в тестировании
- Специальный вид тестов
@SpringBootTest
и производные виды (slices)
- Интеграция Mockito и Spring Boot:
@MockBean
- Специальный вид тестов
@WebMvcTest
webEnvironment
и@LocalServerPort
- Провиженинг БД с Liquibase
- Специальный вид тестов
@DataJpaTest
- Специальный вид тестов
@RestClientTest
- Spring MockRestServiceServer
- Альтернативные тест-дублеры внешних web- и REST-сервисов
- MockServer
- Wiremock
- Контейнеризация окружения при тестировании приложения
- TestContainers