1. 序章

このクイック記事では、JUnit5を使用したSpring5の@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” に置き換えると、実行されません。

テストを静的に無効にする場合は、専用の@Disabledアノテーションがあることに注意してください。

3. @EnabledIfプロパティプレースホルダー付き

@EnabledIf を使用するより実用的な方法は、プロパティプレースホルダーを使用することです。

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

まず、Springコンテキストが読み込まれるように、loadContextパラメーターがtrueに設定されていることを確認する必要があります。

デフォルトでは、このパラメーターは false に設定されており、不要なコンテキストのロードを回避しています。

4. @EnabledIfSpEL式を使用

最後に、 Spring Expression Language(SpEL)式で注釈を使用できます。

たとえば、JDK1.8を実行している場合にのみテストを有効にできます

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

5. @DisabledIf

このアノテーションは、@EnabledIf。の反対です。

たとえば、Java1.7で実行しているときにテストを無効にできます。

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

6. 結論

この簡単な記事では、SpringExtensionを使用したJUnit5テストでの@EnabledIfおよび@DisabledIfアノテーションの使用例をいくつか紹介しました。

例の完全なソースコードは、GitHubから入手できます。