junit4X系列源码--总体介绍
来源:互联网 发布:unity3d 随机数 编辑:程序博客网 时间:2024/06/05 04:31
原文出处:http://www.cnblogs.com/caoyuanzhanlang/p/3530267.html。感谢作者的无私分享。
Junit是一个可编写重复测试的简单框架,是基于Xunit架构的单元测试框架的实例。Junit4最大的改进是大量使用注解(元数据),很多实际执行过程都在Junit的后台做完了,而且写test case 的类不需要继承TestCase,只需要在所要做test case的方法前加@Test 注解即可。
如:
直接点击右键,run as... Junit Test即可运行此test case。
Assert类里面有很多assert方法,包括:assertEquals(), assertNotNull(),assertTtrue(),assertFalse(),assertThat()等,其中assertThat用的是match的形式。
因此,Junit提供很多中Match,其中CoreMatchers是其中一个比较完善的实现类。具体有上面方法可以查阅CoreMatchers类。
问题一,我可不可以把多个测试类放在一起执行?
回答: 可以。org.junit.runner.JUnitCore.runClasses(TestClass1.class, ...);利用这样,把test case 的类放进去,然后放在main()方法里执行。
问题二,@RunWith这个注解有什么作用?
回答:Junit4的默认runner为BlockJunit4ClassRunner,但是Junit4包括第三方软件还提供很多其他的runner,这样如果,我们想让我们的测试类用专门的runner来运行,这时候就可以用@RunWith(Suit.class
)标注测试类。其他特殊的runner有:
1. Suite: 字面理解是一个套装,通俗地讲,就是你可以把很多测试类放在一起,然后建一个类,标注为Suite.class,那么如果执行这个类,就会把所有的测试类一起执行。
2. Parameterized:根据所设计的参数来执行测试。假设我们要测试某一个方法,它有两个参数,每个参数需要设计不同值,那么我们最开始就是需要为每个参数设计一个测试方法,这样就很麻烦,10种case就得10个方法,但是有了Parameterized runner,我们可以设计一个方法,多种参数来执行test case。
以上两个类就是测试了Parameterized runner, 参数会自动匹配。它其实就是,看我们传入几种case, 也就是List.size(),然后,把类里面的方法,循环重复执行size()数目。
3. Categories:容易理解就是分类执行。假设我们有一种case: 我们写好了两个测试类,类A,类B,A有两个方法a(), b(),这时候我们有一个类来执行这两个类的test case,但是我们在类A里只想执行A.b(),但却不执行A.a(),这个时候我们可以用Categories runner。
4. Enclosed:如果我们把tests放在了内部类,这时候执行外部类是无法执行里面的test cases,这种情况下,就应该在outer class 用Enclosed runner。
要测试的类 Address:
test case:
问题三:不想执行某个类的test case 有什么方法?
回答: 用@Ignore, 如果要让某个类都不执行,@Ignore放在类里,如果不想执行某一个方法,只需要放在方法上。
1 @Ignore2 public class TestClass{3 4 @Ignore("Test is ignored as a demonstration")5 @Test6 public void testSane() {7 assertThat(1, is(1));8 }9 }
问题四:某个test case执行时间太长,有什么办法终止?
回答: Junit4提供了timeout属性。
1 @Test(timeout=1000)2 public void testWithTimeout() {3 ...4 }
Junit4还有更重要的@Rule 和 执行顺序。且听下回分解。
- junit4X系列源码--总体介绍
- junit4X系列--Runner解析
- junit4X系列--Statement
- junit4X系列--Rule
- junit4X系列--Exception
- junit4X系列--Assert与Hamcrest
- Junit4X系列--hamcrest的使用
- flume源码阅读-总体介绍
- flume源码阅读-总体介绍
- dex2jar源码解析----总体介绍
- junit4X系列源码--Junit4 Runner以及test case执行顺序和源代码理解
- String系列源码解析01 - 总体框架
- tomcat源码系列(二)--tomcat总体结构
- hive资料整理系列 三 总体介绍
- junit4X系列--Builder、Request与JUnitCore
- Heritrix源码分析(七) Heritrix总体介绍
- Tomcat源码阅读系列(二)Tomcat总体架构
- Tomcat总体架构(Tomcat源码解析系列二)
- 获取 spring 的 bean 方法总结
- 如何在CSDN博客中的所贴的代码进行【代码块】显示
- LIXUN 下git命令提示功能
- 职群教育 | IOS开发 Swift语言入门(五):枚举和结构体
- Nginx配置文件解析
- junit4X系列源码--总体介绍
- PyQT里没有Qt的QString,QList,QStringList等
- junit4X系列源码--Junit4 Runner以及test case执行顺序和源代码理解
- 1016. 部分A+B (15)
- poj_1008 Maya Calendar(模拟题)
- Swift2.2 学习笔记(十) ___字符串字面量
- 理解 JavaScript 中的 Function.prototype.bind
- 数据结构基础之栈
- poj--1664--放苹果(递归好体)