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

目录
  • 简介
  • 案例分析
  • 源码分析
  • 其他

简介

可以通过@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: 官网

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券