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で利用可能]です。