Автор оригинала: Marcos Lopez Gonzalez.
1. введение
В этой краткой статье мы рассмотрим новые аннотации @SpringJUnitConfig и @SpringJUnitWebConfig , доступные в Spring 5.
Эти аннотации представляют собой композицию аннотаций JUnit 5 и Spring 5 , которые упрощают и ускоряют создание тестов.
2. @SpringJUnitConfig
@SpringJUnitConfig объединяет эти 2 аннотации:
- @@ExtendWith(SpringExtension.class) из JUnit 5 для запуска теста с расширением Spring класс и
- @ContextConfiguration из весеннего тестирования для загрузки весеннего контекста
Давайте создадим тест и используем эту аннотацию на практике:
@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class) public class SpringJUnitConfigIntegrationTest { @Configuration static class Config {} }
Обратите внимание, что , в отличие от @ContextConfiguration , классы конфигурации объявляются с использованием атрибута value . Однако местоположения ресурсов должны быть указаны с помощью атрибута locations .
Теперь мы можем убедиться, что контекст Spring действительно был загружен:
@Autowired private ApplicationContext applicationContext; @Test void givenAppContext_WhenInjected_ThenItShouldNotBeNull() { assertNotNull(applicationContext); }
Наконец, здесь у нас есть эквивалентный код @SpringJUnitConfig(SpringJUnitConfigTest.Config.class):
@ExtendWith(SpringExtension.class) @ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)
3. @SpringJUnitWebConfig
@SpringJUnitWebConfig объединяет те же аннотации @SpringJUnitConfig плюс @WebAppConfiguration из Spring testing – для загрузки WebApplicationContext .
Давайте посмотрим, как работает эта аннотация:
@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class) public class SpringJUnitWebConfigIntegrationTest { @Configuration static class Config { } }
Например, @SpringJUnitConfig , классы конфигурации входят в атрибут value |, а любые ресурсы задаются с помощью атрибута locations .
Кроме того, атрибут value атрибута @WebAppConfiguration теперь должен быть указан с помощью атрибута resource Path . По умолчанию этому атрибуту присвоено значение “src/main/webapp” .
Теперь давайте убедимся, что WebApplicationContext действительно был загружен:
@Autowired private WebApplicationContext webAppContext; @Test void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() { assertNotNull(webAppContext); }
Опять же, здесь у нас есть эквивалентный код без использования @SpringJUnitWebConfig :
@ExtendWith(SpringExtension.class) @WebAppConfiguration @ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)
4. Заключение
В этом кратком руководстве мы показали, как использовать недавно введенные @SpringJUnitConfig и @SpringJUnitWebConfig аннотации в Spring 5.
Полный исходный код примеров доступен на GitHub .