版权声明:猿友们共同进步。ps:博客中有不当之处,还请不吝指教。转载也请注明出处哈: https://blog.csdn.net/CSDN___LYY/article/details/86164227
简介
可以通过@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: 官网