JUnit是一个Java语言的单元测试框架。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。Junit实际上是一套框架,继承TestCase类,就可以用Junit进行自动测试了。JUnit众多版本中比较好用的是Junit4,Junit4测试往往也十分便捷。
Junit4是在极限编程和重构(refactor)中被极力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率,因此Junit4测试往往成为众多测试人员的首选。下面我们来看看Junit4测试流程实例。
1.创建待测试类
首先创建一个项目叫Junit_Test,我们编写一个Calculator类。这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。
该类代码如下:
package calculate;
public class Calculator {
private static int result;// 静态变量 用于存储运行结果
public void add(int n) {
result = result + n;
}
public void substance(int n) {
result = result - 1;// bug }
public void multiple(int n) {
result = result * n;
}
public void divide(int n) {
result = result / n;
}
public void square(int n) {
result = n * n;
}
public void sqrt(int n){
for(;;)
;//bug 死循环 }
public void clear() {
result = 0;
}
public int getResult() {
return result;
}}
2.在eclipse中为项目添加Junit环境
右键Junit_Test项目,在build path中“add library”,添加Junit,如下图所示。
3.创建测试类
右键Calculator类,选择“new”,创建Junit test case
使用@Test标签标注测试方法
在Junit4中,一个POJO类就是一个测试类,测试方法通过@Test来标识,初始化方法通过@Before来标识,释放资源的方法通过@After来标识。
4.修改测试用例代码
测试用例代码如下:
/** * */package calculate;
import static org.junit.Assert.*;
import org.junit.Before;import org.junit.Test;
public class CalculatorTest {
private static Calculator ca = new Calculator();
// 复原操作 表明对每个TEST方法测试以后都会进行这个操作 @Before
public void setUp() throws Exception {
ca.clear();// 结果清零 }
@Test
public void testAdd() {
// fail("Not yet implemented"); ca.add(2);
ca.add(3);
assertEquals(5, ca.getResult());
}
@Test
public void testSubstance() {
// fail("Not yet implemented"); ca.add(10);
ca.substance(5);
assertEquals(5, ca.getResult());
}
@Test
public void testMultiple() {
// fail("Not yet implemented"); ca.add(4);
ca.multiple(2);
assertEquals(8, ca.getResult());
}
@Test(timeout = 1000)
public void testDivide() {
// fail("Not yet implemented"); ca.add(6);
ca.divide(3);
assertEquals(2, ca.getResult());
}
@Test(timeout = 1000)//timeout参数表明了你设定的时间,单位为毫秒,因此1000代表1s。 public void testsqrt(){
ca.sqrt(4);
assertEquals(2, ca.getResult());
}
@Test
public void square1() {
// fail("Not yet implemented"); ca.square(3);
assertEquals(9, ca.getResult());
}
@Test
public void square2() {
// fail("Not yet implemented"); ca.square(-3);
assertEquals(9, ca.getResult());
}
@Test
public void square3() {
// fail("Not yet implemented"); ca.square(0);
assertEquals(0, ca.getResult());
}
@Test
public void testClear() {
// fail("Not yet implemented"); assertEquals(0, ca.getResult());
}
//@test 注意大小写。 //测试异常 @Test(expected=ArithmeticException.class)
public void divideByZero(){
ca.divide(0);
}
}
运行结果如下:
以上就是一个完整的Junit4测试实例,使用Junit4版本进行单元测试时,不用测试类继承TestCase父类,因为,Junit4全面引入了Annotation来执行我们编写的测试。Junit4引用了注解的方式,进行单元测试,这使得Junit4测试大大提高了测试效率。在本站的Tomcat服务器教程中还有更多的相关的对Web服务器进行测试的Junit4测试实例,感兴趣的小伙伴可以下载源码进行学习。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习