写了个类,要给别人用,但是不知道有没有bug,测试一下,即可,一般都用main方法测试,也就是比如用System.out.println(a);的样子将要测试的东西答应出来找bug,但是这种测试方法有两个缺点:
第一、 不能一起运行
第二、 大多数情况下需要人为的观察输出结果确定是否正确
为什么要进行单元测试
一、重用测试,以应对将来软件开发的变化,使得程序更加健壮
二、减少了软件运行维护的成本,降低软件bug的概率
三、确保程序是没问题的,安心进行下一步工作
注意:有人会问测试人员不就是专门测试的吗,没错,但是测试人员测试的是一般都是黑盒测试,也就是说根据客户和公司的协议共同制定的需求测试,主要测试的是功能是否符合客户的需求,性能测试等。而JUnit是白盒测试,是用来测试代码的,主要是用来提高软件的质量的,所以要搞清楚这个概念
保持状态状态条是绿的,程序就是没问题的,比如修改assertEquals(9,z)的话,状态条就变成了其他颜色,那么说明程序有问题
测试例子:
新建一个项目名字为JUnit4,新建一个包名字为com.loulijun.junit4,新建一个class为Hello.java。代码如下
package com.loulijunn.junit4;
public class Hello {
public int add(int x,int y)
{
return x+y;
}
public static void main(String args[])
{
int z=new Hello().add(3, 5);
System.out.println("result="+z);
}
}
那么这个时候,再新建一个包,一般这个包的名字为要测试的包的名字后面再加个.test即可如com.loulijun.junit4.test,当然这个不是必须的。
在com.loulijun.junit4.test右击鼠标,新建一个JUnit Test Case,然后再里面写入如下代码
package com.loulijunn.junit4.test;
import static org.junit.Assert.*;
import org.junit.Assert;
import org.junit.Test;
import com.loulijunn.junit4.Hello;
public class HelloTest {
@Test
public void testAdd() {
//fail("Not yet implemented");
//asset意思是断言,也就是判断到底对不对
//Assert.assertArrayEquals(expecteds, actuals)
//静态引入是不需要Assert.的,直接写assertArrayEquals()方法即可
int z=new Hello().add(5,3);
assertEquals(8, z);//期望值是8,实际值是z,如果相等,就正确,否则有问题
}
}
然后选中HelloTest.java,或者选中你要测试的那个方法,如testAdd()方法,右键点击Run As—Junit Test,此时就会在左边的JUnit窗口看到是否成功的窗口
如果状态条是绿色的,说明程序没有问题
为了说明程序,可以把 assertEquals(8, z); 中的8该为9,再次运行JUnit Test
如果状态栏变成了其他颜色,就程序说明有问题
使用JUnit的好处:
① 用不到人工的用眼睛看bug了,程序帮你看测试是否成功,(用自己的方法)
② 可以多个方法一起测试
③ 看一眼状态条就知道是否通过了