Les annotations SpringJUnitConfig et SpringJUnitWebConfig au printemps 5

SpringJUnitConfig et SpringJUnitWebConfig Annotations au printemps 5

1. introduction

Dans cet article rapide, nous allons examiner les nouvelles annotations@SpringJUnitConfig et@SpringJUnitWebConfig disponibles au printemps 5.

These annotations are a composition of JUnit 5 and Spring 5 annotations qui rendent la création de test plus facile et plus rapide.

2. @SpringJUnitConfig

@SpringJUnitConfig combine ces 2 annotations:

  • @ExtendWith(SpringExtension.class) from JUnit 5 pour exécuter le test avec la classeSpringExtension et

  • @ContextConfiguration from Spring Testing pour charger le contexte Spring

Créons un test et utilisons cette annotation en pratique:

@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. Cependant, les emplacements des ressources doivent être spécifiés avec l'attributlocations.

Nous pouvons maintenant vérifier que le contexte Spring était vraiment chargé:

@Autowired
private ApplicationContext applicationContext;

@Test
void givenAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(applicationContext);
}

Enfin, nous avons ici le code équivalent de@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 - pour charger lesWebApplicationContext.

Voyons comment fonctionne cette annotation:

@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class)
public class SpringJUnitWebConfigIntegrationTest {

    @Configuration
    static class Config {
    }
}

Comme@SpringJUnitConfig,the configuration classes go in the value attribute et toutes les ressources sont spécifiées à l'aide de l'attributlocations.

De plus, l'attributvalue de@WebAppConfiguration doit maintenant être spécifié à l'aide de l'attributresourcePath. By default, this attribute is set to “src/main/webapp”.

Vérifions maintenant que leWebApplicationContext a bien été chargé:

@Autowired
private WebApplicationContext webAppContext;

@Test
void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(webAppContext);
}

Encore une fois, nous avons ici le code équivalent sans utiliser@SpringJUnitWebConfig:

@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)

4. Conclusion

Dans ce bref didacticiel, nous avons montré comment utiliser les annotations@SpringJUnitConfig et@SpringJUnitWebConfig nouvellement introduites au printemps 5.

Le code source complet des exemples est disponibleover on GitHub.