Junit5系列-Junit5中@Disabled禁止執行

yoylee_web發表於2019-01-09

系列導航

點選跳轉到系列博文目錄導航

簡介

可以通過@Disabled註釋,禁用整個測試類或單個測試方法。

這個@Disabled註解代替了Junit4中的@Ignore註解,功能相同。

案例分析

其中每個方法的作用程式碼中的註釋寫的已經非常清楚了,就不再贅述了.

大家最好將程式碼自己測試一遍,可以加深理解與記憶!
案例程式碼:

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;

@Disabled
class DisabledClassDemo {
    //因為在類上註釋了@Disabled,所以類中的所有方法都被禁止執行
    @Test
    void testDisable(){
        assertTrue(true);
    }
    @Test
    void testDisable2(){
        assertTrue(true);
    }
}

class DisabledTestsDemo {
   //此方法被禁止執行,並在控制檯列印預設訊息“void junit5_test.DisabledTestsDemo.testWillBeSkipped1() is @Disabled”字樣!
    @Disabled
    @Test
    void testWillBeSkipped1() {
    }
    //此方法被禁止執行,並在控制檯列印自定義訊息“testWillBeSkipped ware disabled!”字樣!
    @Disabled(value = "testWillBeSkipped ware disabled!")
    @Test
    void testWillBeSkipped2() {
    }
    //此方法正常執行
    @Test
    void testWillBeExecuted() {
    }
}

原始碼分析

1.@Disabled註解原始碼:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(
    status = Status.STABLE,
    since = "5.0"
)
public @interface Disabled {
    String value() default "";
}

從原始碼中可以發現:

  • 元註解@Target中說明該註解可以作用在類、Enum、方法上面
  • 元註解@Retention說明在原始檔、class檔案、執行時都存在該註解
  • 元註解@Documented說明此註解將包含在javadoc說明中
  • @API 說明了該註解的現狀,該註解是穩定的且從5.0新增的
  • 引數:String value(); 賦值我們當方法被禁止直行時自定義的列印訊息,有預設值所以不是必須要賦值。

其他

在這裡對比一下Junit4的@Ignore和Junit5的@Disabled兩個註解吧:
@Ignore的原始碼

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Ignore {
    String value() default "";
}

從原始碼層面來看,並沒有任何本質的區別,Junit5用@Disabled代替Junit4中@Ignore只是為了更加符合該註解作用的”不能執行此測試方法“的語義。

如果轉載此博文,請附上本文連結,謝謝合作~ :https://blog.csdn.net/csdn___lyy

如果感覺這篇文章對您有所幫助,請點選一下“喜歡”或者“關注”博主,您的喜歡和關注將是我前進的最大動力!

refer: 官網

相關文章