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