Junit 是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。
Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。
Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
junit4.x
(1)、使用junit4.x版本进行单元测试时,不用测试类继承TestCase父类,因为,junit4.x全面引入了Annotation来执行我们编写的测试。
(2)、junit4.x版本,引用了注解的方式,进行单元测试;
(3)、junit4.x版本我们常用的注解:(
由于这部分比较常用所以我排在比较前,方便本人复习之用
)
A、
@Before
注解:与junit3.x中的setUp()方法功能一样,在每个测试方法之前执行;
B、
@After
注解:与junit3.x中的tearDown()方法功能一样,在每个测试方法之后执行;
C、
@BeforeClass
注解:在所有方法执行之前执行;
D、
@AfterClass
注解:在所有方法执行之后执行;
E、
@Test(timeout = xxx)
注解:设置当前测试方法在一定时间内运行完,否则返回错误;
F、
@Test(expected = Exception.class)
注解:设置被测试的方法是否有异常抛出。抛出异常类型为:Exception.class;
G、
@Ignore
注解:注释掉一个测试方法或一个类,被注释的方法或类,不会被执行。
特性:
1、用于测试期望结果的断言(Assertion)
2、用于共享共同测试数据的测试工具
3、用于方便的组织和运行测试的测试套件
4、图形和文本的测试运行器
最简单的范例如下:
1、创建一个TestCase的子类
|
package junitfaq;
import java.util.*;
import junit.framework.*;
public class SimpleTest extends TestCase {
public SimpleTest(String name) {
super(name);
}
|
2、写一个测试方法断言期望的结果
|
public void testEmptyCollection() {
Collection collection = new ArrayList();
assertTrue(collection.isEmpty());
}
注意:JUnit推荐的做法是以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试。
|
3、写一个suite()方法,它会使用反射动态的创建一个包含所有的testXxxx方法的测试套件
|
public static Test suite() {
return new TestSuite(SimpleTest.class);
}
|
4、写一个main()方法以文本运行器的方式方便的运行测试
|
public static void main(String args[]) {
junit.textui.TestRunner.run(suite());
}
}
|
5、运行测试
以文本方式运行:
java junitfaq.SimpleTest
以图形方式运行:
java junit.swingui.TestRunner junitfaq.SimpleTest
|
文本方式通过的测试结果是:
Time: 0
OK (1 tests)
Time上的小点表示测试个数,如果测试通过则显示OK。否则在小点的后边标上F,表示该测试失败。
每次的测试结果都应该是OK的,这样才能说明测试是成功的,如果不成功就要马上根据提示信息进行修正了。
如果JUnit报告了测试没有成功,它会区分失败(failures)和错误(errors)
通过的测试结果在图形界面的绿色条部分。
|