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”則不會執行:

Spring 5使用@EnabledIf註釋進行測試

請記住,如果要靜態禁用測試,則有專用的@Disabled註釋。

3. @EnabledIf帶有屬性佔位符

使用@EnabledIf更實用的方法是使用屬性佔位符:

@Test

 @EnabledIf(

 expression = "${tests.enabled}",

 loadContext = true)

 void givenEnabledIfExpression_WhenTrue_ThenTestExecuted() {

 // ...

 }

首先,我們需要確保將loadContext參數設置為true以便加載Spring上下文。

默認情況下,此參數設置為false以避免不必要的上下文加載。

4. @EnabledIf帶有SpEL表達式

最後,我們可以將註釋與Spring Expression Language(SpEL)表達式一起使用。

例如,我們只能在運行JDK 1.8時啟用測試

@Test

 @EnabledIf("#{systemProperties['java.version'].startsWith('1.8')}")

 void givenEnabledIfSpel_WhenTrue_ThenTestExecuted() {

 assertTrue(true);

 }

5. @DisabledIf

此註釋與@EnabledIf.相反@EnabledIf.

例如,我們可以在Java 1.7上運行時禁用測試:

@Test

 @DisabledIf("#{systemProperties['java.version'].startsWith('1.7')}")

 void givenDisabledIf_WhenTrue_ThenTestNotExecuted() {

 assertTrue(true);

 }

六,結論

在這篇簡短的文章中,我們介紹了幾個使用@DisabledIf在JUnit 5測試中使用@EnabledIf@DisabledIf批註的SpringExtension

示例的完整源代碼可在GitHub上獲得