Spring 5 @EnabledIfアノテーションを使ったテスト
1前書き
このクイック記事では、JUnit 5を使用してSpring 5の
@ EnabledIf
および
@ DisabledIf
アノテーションを発見します。
簡単に言えば、これらのアノテーションは指定された条件が満たされた場合に特定のテストを無効/有効にすることを可能にします。
これらのアノテーションがどのように機能するかを示すために、単純なテストクラスを使用します。
@SpringJUnitConfig(Spring5EnabledAnnotationIntegrationTest.Config.class)
public class Spring5EnabledAnnotationIntegrationTest {
@Configuration
static class Config {}
}
2.
@ EnabledIf
テキストリテラル
“ true”
を使用したこの単純なテストをクラスに追加しましょう。
@EnabledIf("true")
@Test
void givenEnabledIfLiteral__WhenTrue__ThenTestExecuted() {
assertTrue(true);
}
このテストを実行すると、正常に実行されます。
-
ただし、提供された
String
を
“ false”
に置き換えると、実行されません。**
テストを静的に無効にしたい場合は、専用のhttp://junit.org/junit5/docs/5.0.0/api/org/junit/jupiter/api/Disabled.html[
@Disabled
]があります。これに対する注釈。
3プロパティプレースホルダを持つ
@ EnabledIf
@ EnabledIf
を使用するより実用的な方法は、プロパティプレースホルダーを使用することです。
@Test
@EnabledIf(
expression = "${tests.enabled}",
loadContext = true)
void givenEnabledIfExpression__WhenTrue__ThenTestExecuted() {
//...
}
まず最初に、Springコンテキストがロードされるように、
loadContext
パラメーターが
true
に設定されていることを確認する必要があります。
デフォルトでは、このパラメータは
false
に設定されており、不要なコンテキストロードを回避します。
4 SpEL式を使った
@ EnabledIf
最後に、** Spring Expression Language(SpEL)式で注釈を使用できます。
たとえば、JDK 1.8を実行している場合にのみテストを有効にできます。
@Test
@EnabledIf("#{systemProperties['java.version'].startsWith('1.8')}")
void givenEnabledIfSpel__WhenTrue__ThenTestExecuted() {
assertTrue(true);
}
5
@ DisabledIf
-
このアノテーションは
@EnabledIf.
** の反対です
たとえば、Java 1.7上で実行しているときはテストを無効にできます。
@Test
@DisabledIf("#{systemProperties['java.version'].startsWith('1.7')}")
void givenDisabledIf__WhenTrue__ThenTestNotExecuted() {
assertTrue(true);
}
6. 結論
この短い記事では、
SpringExtension
を使用したJUnit 5テストでの
@ EnabledIf
および
@ DisabledIf
アノテーションの使用例をいくつか紹介しました。
例の完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/spring-5[GitHubで利用可能]です。