As anotações SpringJUnitConfig e SpringJUnitWebConfig no Spring 5

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.