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:
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.