Spring 5 Testen mit @EnabledIf Annotation

Frühling 5 Testen mit @EnabledIf Annotation

1. Einführung

In diesem kurzen Artikel werden wir die Anmerkungen@EnabledIf und@DisabledIf in Spring 5 mit JUnit 5 ermitteln.

Einfach ausgedrückt,those annotations make it possible to disable/enable particular test if a specified condition is met.

Wir werden eine einfache Testklasse verwenden, um zu zeigen, wie diese Anmerkungen funktionieren:

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

    @Configuration
    static class Config {}
}

2. @EnabledIf

Fügen wir unserer Klasse diesen einfachen Test mit einem Textliteral“true” hinzu:

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

Wenn wir diesen Test ausführen, wird er normal ausgeführt.

Wenn wir jedoch die bereitgestelltenString durch“false” ersetzen, wird es nicht ausgeführt:

image

Beachten Sie, dass, wenn Sie einen Test statisch deaktivieren möchten, hierfür eine dedizierte@Disabled-Anmerkung vorhanden ist.

3. @EnabledIf mit einem Eigenschaftsplatzhalter

Eine praktischere Methode zur Verwendung von@EnabledIf ist die Verwendung eines Platzhalters für Eigenschaften:

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

Zunächst müssen wir sicherstellen, dass der ParameterloadContext auftrue gesetzt ist, damit der Spring-Kontext geladen wird.

Standardmäßig ist dieser Parameter auffalse eingestellt, um unnötiges Laden des Kontexts zu vermeiden.

4. @EnabledIf mit einem SpEL-Ausdruck

Schließlichwe can use the annotation with Spring Expression Language (SpEL) expressions.

Beispielsweise können wir Tests nur aktivieren, wenn JDK 1.8 ausgeführt wird

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

5. @DisabledIf

Diese Annotation ist das Gegenteil von@EnabledIf.

Zum Beispiel können wir Test deaktivieren, wenn wir auf Java 1.7 laufen:

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

6. Fazit

In diesem kurzen Artikel haben wir einige Beispiele für die Verwendung von@EnabledIf- und@DisabledIf-Annotationen in JUnit 5-Tests unter Verwendung vonSpringExtension durchgearbeitet.

Der vollständige Quellcode für die Beispiele istover on GitHub verfügbar.