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”
則不會執行:
請記住,如果要靜態禁用測試,則有專用的@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上獲得。