JUnit入门
JUnit
是一个开源的
java
单元测试框架。在
1997
年,由
Erich Gamma
和
Kent Beck
开发完成。这两个牛人中
Erich Gamma
是
GOF
之一;
Kent Beck
则在
XP
中有重要的贡献。
JUnit
一些特性:
1):
提供的
API
可以让你写出测试结果明确的可重用单元测试用例
2):
提供了三种方式来显示你的测试结果,而且还可以扩展
3):
提供了单元测试用例成批运行的功能
4):
超轻量级而且使用简单
5):
整个框架设计良好,易扩展
对不同的测试对象:
Class
,
Jsp
,
Servlet
,
Ejb
等,
Junit
有不同的使用技巧,下面主要是以Class为主
Sample待测Class
public class TestSample extends TestCase {
public void testAdd() {
SampleCalculator calculator = new SampleCalculator();
int result = calculator.add(50, 20);
assertEquals(70, result);
}
public void testSubtration() {
SampleCalculator calculator = new SampleCalculator();
int result = calculator.subtration(50, 20);
assertEquals(30, result);
}
}
Sample的TestCase
import junit.framework.TestCase;
public class TestSample extends TestCase {
public void testAdd() {
SampleCalculator calculator = new SampleCalculator();
int result = calculator.add(50, 20);
assertEquals(70, result);
}
public void testSubtration() {
SampleCalculator calculator = new SampleCalculator();
int result = calculator.subtration(50, 20);
assertEquals(30, result);
}
}
框架规定:
1) 所有的测试类,必须继承自
junit
.framework.TestCase
2) 里面的测试方法,命名应该以Test开头,必须是public void,不能有参数
3) 尽量一个TestXXX方法对一个功能单一的方法进行测试
4)
使用
assertEquals
等
junit
.framework.TestCase
中的断言方法来判断测试结果正确与否
批量测试:
SampleTestAll
import junit.framework.TestSuite;
import junit.framework.Test;
public class TestAll {
public static Test suite() {
TestSuite suite = new TestSuite("TestSuite Test");
//添加junit测试类
suite.addTestSuite(TestSample.class);
return suite;
}
}
TestCase中的初始化和执行顺序:
初始化
protected void setUp(){
// 初始化…
System.out.println("初始化…");
}
protected void tearDown(){
// 撤销初始化……
System.out.println("结束");
}
执行顺序:setUp方法->TestCase中的TestXXX方法一-->tearDown-->setUp方法->TestCase中的TestXXX方法二-->tearDown
结果:
Errors:非正常,出现错误。
Failures:测试预期的失败,由于JUnit的判断失败,可能是测试代码的逻辑错误或者代码Bug