JUNIT源码阅读(二)– org.junit.*
来源:互联网 发布:网络批发干货平台 编辑:程序博客网 时间:2024/06/06 05:06
一、After
从4.0开始定义的一个注解@After,在org.junit.Test方法执行后才调用本方法 ,被注释的方法必须为public,同时,即使@Test方法和@Before抛错了,也会执行。
当前类的After会在父类的After之前执行(也适用于AfterClass)
@Retention(RetentionPolicy.RUNTIME)
1)、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2)、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3)、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
使用了@Target(ElementType.METHOD),注解的作用目标为方法
1)、@Tar get(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包
二、AfterClass
如果使用了org.junit.BeforeClass,就需要执行AfterClass注解的方法,这个被注解的方法会在@Test方法后执行
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
三、Assume
从JUNIT4.4开始新增的类。Assume直译为假设,是JUnit提供的一套用于判断测试用例的入参是否有业务含义的工具,如果入参不符合预期时会抛出AssumptionViolatedException,默认的BlockJUnit4ClassRunner及其子类会捕获这个异常并跳过当前测试,如果使用自定义的Runner则无法保证行为,视Runner的实现而定。
- public static void assumeTrue(boolean):判断输入的值是否为true,结果为false时,用例停止或者忽略,类似一个假定条件,只有达到条件后才会执行测试用例。
- public static void assumeFalse(boolean b):判断输入的值是否为false
- public static void assumeThat(T , Matcher ):判断两个参数是否matches,matches()可以重写,这个方法抛出AssumptionViolatedException
- public static void assumeNotNull(Object… objects):Object …objects这种参数定义是在不确定方法参数的情况下的一种多态表现形式。即这个方法可以传递多个参数,这个参数的个数是不确定的。使用LIST中的asList()方法,调用Matcher类中的everyItem()去判断是否有对象为空
- public static void assumeNoException(Throwable):当传入异常时,用例会被终止或者忽略
四、Before
从4.0开始定义的一个注解@Before,在org.junit.Test方法执行前才调用本方法 ,被注释的方法必须为public。一般写整个测试用例组执行的前置条件,例如创建被测试对象等。使用范围为:
RetentionPolicy.RUNTIME和ElementType.METHOD
当前类的Before会在父类的Before之后执行(也适用于BeforeClass )
五、BeforeClass
和before的区别
@before
在每个测试方法之前都会运行一次,只需声明成public
@beforeclass
在类中只运行一次,必须声明成public static
六、ClassRule
@ClassRule和@Rule只能注解在字段中,并且该字段的类型必须实现了TestRule接口,对@ClassRule注解的字段还必须是public,static,并且@ClassRule注解的字段在运行时不可以抛异常,不然JUnit的行为是未定义的
而对@Rule注解的字段必须是public,非static
这个没用过,具体也不是很清楚,参考了一下别人的博客,以后用到的时候进行补充。把这个包看完下一个就读TestRule和它的孩子们,算是Junit的核心部分了。。
七、ComparisonFailure类
这个类是在assertEquals()判断后,为了详细的描述两个判断对象具体的不一致,对比长度限制为20,具体放到AssertionError章节细看。
八、ComparisonCompactor类
是ComparisonFailure的私有静态类。具体放到AssertionError章节细看。
- JUNIT源码阅读(二)– org.junit.*
- JUNIT4.11源码阅读(一)--org.junit.Assert类
- JUnit源码分析(二)
- JUnit源码阅读 -- 阅读基础
- JUnit源码阅读 -- 测试入口
- Junit源码阅读心得(1)
- JUnit学习笔记(二):源码
- 【Junit】Junit使用教程(二)
- 【转】JUnit(二)
- Junit 入门(二)
- Junit使用指南(二)
- junit(二)
- JUnit源码分析(一)
- JUnit源码分析(三)
- Junit使用教程(二)
- Junit使用教程(二)
- Junit使用教程(二)
- JUnit + Mockito 单元测试(二)
- Ubuntu下glfw的安装与使用
- 30天自制操作系统之RachelOS DAY 3
- RSA那点事
- Java机器学习库ML之十模型选择准则AIC和BIC
- Java 泛型通配符解惑
- JUNIT源码阅读(二)– org.junit.*
- Centos 7 批量重命名文件名
- videoview全屏播放
- Fragment使用时候的Import问题import android.support.v4.app.Fragment
- erlang的case和if
- Appium 截图方法
- [android] 手机卫士输入框抖动和手机震动
- springmvc
- 使用一般处理程序.ashx