As anotações SpringJUnitConfig e SpringJUnitWebConfig no Spring 5
1. Introdução
Neste artigo rápido, daremos uma olhada nas novas anotações@SpringJUnitConfig e@SpringJUnitWebConfig disponíveis no Spring 5.
These annotations are a composition of JUnit 5 and Spring 5 annotations que tornam a criação de testes mais fácil e rápida.
2. @SpringJUnitConfig
@SpringJUnitConfig combina estas 2 anotações:
-
@ExtendWith(SpringExtension.class) from JUnit 5 para executar o teste com a classeSpringExtension e
-
@ContextConfiguration from Spring Testing para carregar o contexto Spring
Vamos criar um teste e usar esta anotação na prática:
@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class)
public class SpringJUnitConfigIntegrationTest {
@Configuration
static class Config {}
}
Notice that, in contrast to the @ContextConfiguration, configuration classes are declared using the value attribute. No entanto, os locais dos recursos devem ser especificados com o atributolocations.
Agora podemos verificar se o contexto do Spring foi realmente carregado:
@Autowired
private ApplicationContext applicationContext;
@Test
void givenAppContext_WhenInjected_ThenItShouldNotBeNull() {
assertNotNull(applicationContext);
}
Finalmente, aqui temos o código equivalente a@SpringJUnitConfig(SpringJUnitConfigTest.Config.class):
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)
3. @SpringJUnitWebConfig
@SpringJUnitWebConfigcombines the same annotations of @SpringJUnitConfig plus the @WebAppConfiguration from Spring testing - para carregar oWebApplicationContext.
Vamos ver como essa anotação funciona:
@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class)
public class SpringJUnitWebConfigIntegrationTest {
@Configuration
static class Config {
}
}
Como@SpringJUnitConfig,the configuration classes go in the value attribute e quaisquer recursos são especificados usando o atributolocations.
Além disso, o atributovalue de@WebAppConfiguration agora deve ser especificado usando o atributoresourcePath. By default, this attribute is set to “src/main/webapp”.
Vamos agora verificar seWebApplicationContext foi realmente carregado:
@Autowired
private WebApplicationContext webAppContext;
@Test
void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() {
assertNotNull(webAppContext);
}
Novamente, aqui temos o código equivalente sem usar@SpringJUnitWebConfig:
@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)
4. Conclusão
Neste breve tutorial, mostramos como usar as anotações@SpringJUnitConfige@SpringJUnitWebConfig recém-introduzidas no Spring 5.
O código-fonte completo dos exemplos está disponívelover on GitHub.