Spring 5 Test avec @EnabledIf Annotation

Spring 5 Test avec @EnabledIf Annotation

1. introduction

Dans cet article rapide, nous découvrirons les annotations@EnabledIf et@DisabledIf au printemps 5 à l'aide de JUnit 5.

En termes simples,those annotations make it possible to disable/enable particular test if a specified condition is met.

Nous allons utiliser une classe de test simple pour montrer comment ces annotations fonctionnent:

@SpringJUnitConfig(Spring5EnabledAnnotationIntegrationTest.Config.class)
public class Spring5EnabledAnnotationIntegrationTest {

    @Configuration
    static class Config {}
}

2. @EnabledIf

Ajoutons à notre classe ce test simple avec un littéral textuel“true”:

@EnabledIf("true")
@Test
void givenEnabledIfLiteral_WhenTrue_ThenTestExecuted() {
    assertTrue(true);
}

Si nous exécutons ce test, il s'exécute normalement.

Cependant, si nous remplaçons lesString fournis par“false”, il n’est pas exécuté:

image

N'oubliez pas que si vous souhaitez désactiver statiquement un test, il existe une annotation@Disabled dédiée à cet effet.

3. @EnabledIf avec un espace réservé de propriété

Un moyen plus pratique d'utiliser@EnabledIf consiste à utiliser un espace réservé de propriété:

@Test
@EnabledIf(
  expression = "${tests.enabled}",
  loadContext = true)
void givenEnabledIfExpression_WhenTrue_ThenTestExecuted() {
    // ...
}

Tout d'abord, nous devons nous assurer que le paramètreloadContext est défini surtrue afin que le contexte Spring soit chargé.

Par défaut, ce paramètre est défini surfalse pour éviter un chargement de contexte inutile.

4. @EnabledIf avec une expression SpEL

Enfin,we can use the annotation with Spring Expression Language (SpEL) expressions.

Par exemple, nous pouvons activer les tests uniquement lors de l'exécution de JDK 1.8

@Test
@EnabledIf("#{systemProperties['java.version'].startsWith('1.8')}")
void givenEnabledIfSpel_WhenTrue_ThenTestExecuted() {
    assertTrue(true);
}

5. @DisabledIf

Cette annotation est l'opposé de@EnabledIf.

Par exemple, nous pouvons désactiver le test lors de l'exécution sur Java 1.7:

@Test
@DisabledIf("#{systemProperties['java.version'].startsWith('1.7')}")
void givenDisabledIf_WhenTrue_ThenTestNotExecuted() {
    assertTrue(true);
}

6. Conclusion

Dans ce bref article, nous avons passé en revue plusieurs exemples d'utilisation des annotations@EnabledIf et@DisabledIf dans les tests JUnit 5 en utilisant lesSpringExtension.

Le code source complet des exemples est disponibleover on GitHub.