Автор оригинала: 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 .