Junit单元测试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JUnit java单元测试
首先须导入JUnit包:所在项目右击->Build Path->Add Libraries ->选择JUnit->选择一个版本->Finish
一.手动生成
1.测试方法,必须符合下列条件
*方法必须声明成:public,void
*JUnit3方法名必须以test开头,JUnit4则不需要
*方法无参数
如:JUnit3:Public void testAdd(){}
JUnit4:@Test (org.junit.Test)
Public void AddTest(){}
2. JUit3 与 JUit4的区别
源码和测试代码分开放在不同的Source Folder,测试代码所在的包名最好和源码中的包名一一对应。JUnit3测试方法中的类必须继承TestCase (junit.framwork.TestCase);而JUnit4类则不需要继承任何类,但在方法前须加上注解@Test(org.junit.Test)此测试方法,标注该程序是以JUnit的方式来运行的。
JUit3:在方法前加上TestCase类的方法setUp(),在执行每一次测试方法之前都会被调用,可把在测试方法中都需要的程序放在这里;最后加上
tearDown()方法,在执行每一次方法后都会被调用。
JUit4:与JUit3不同的是,在JUit4中是在方法前用注解
@BeforeClass:globeInit(),无论执行多少测试方法,它只执行一次,且运行在最前
@Before:把方法注解成Before,init()与JUit3中的setUp()方法作用一样@After:把方法注解成After,destroy()与JUit3中的tearDown ()方法作用一样
@AfterClass:无论执行多少测试方法,它只执行一次,且运行在最后
下面分别以JUit3和JUit4为例子来运行测试:
例1.JUit3
源代码:
package com.sinyee.unit;
public class ArrayUnit {
/**
*传入一个数组,返回该数组的最大值
*@param array
*@return
*/
public int getMaxValue(int[] array) throws Exception { if (array==null) {
throw new NullPointerException("空指针异常");
}
if (array.length == 0) {
throw new ArrayIndexOutOfBoundsException("数组不能为
空!");
}
int temp = array[0];
for (int i = 1; i < array.length; i++) {
if (temp < array[i]) {
array[i] = temp;
}
}
// 取出该数组的最大值
return temp;
}
Junit3测试代码
package com.sinyee.unit;
import junit.framework.TestCase;
public class ArrayTest extends TestCase {
//设置类的成员变量,可以供所有的方法调用
private ArrayUnit aUnit;
/**
*该setUp()方法为TestCase里面的方法
*作用:在每次执行调用测试方法之前,会先调用该setUp方法*/
@Override
protected void setUp() throws Exception { //实例化数组工具对象
aUnit=new ArrayUnit();
System.out.println("setUp()");
}
/**
*求数组最大值的测试用例1:数组不为空
*/
public void testGetMaxValue1(){
//定义一个array数组
int[] array={40,3,2,6,9,30,4};
try {
//调用求数组最大值方法
int actual = aUnit.getMaxValue(array);
//期望值为40
int expected=40;
//断言actual==expect
assertEquals(expected, actual);
} catch (Exception e) {
e.printStackTrace();
fail();
}
}
*求数组最大值的测试用例2:数组为空
*/
public void testGetMaxValue2(){
//定义一个array数组
int[] array={};
//实例化数组对象
ArrayUnit aUnit=new ArrayUnit();
try {
//调用求数组最大值方法
aUnit.getMaxValue(array);
//若上面的方法有抛出异常,则fail()方法将不会被调用
fail();
} catch (Exception e) {
//断言该异常为ArrayIndexOutOfBoundsException该类型的异常,且消息为"数组不能为空!"
assertEquals(ArrayIndexOutOfBoundsException.class, e.getClass());
assertEquals("数组不能为空!", e.getMessage());
}
}
/**
*求数组最大值的测试用例3:空指针异常
*/
public void testGetMaxValue3(){
int[] array=null;
ArrayUnit aUnit=new ArrayUnit();
try {
aUnit.getMaxValue(array);
fail();
} catch (Exception e) {
//断言该异常为NullPointerException该类型的异常,且消息为"空指针异常"
assertEquals(NullPointerException.class,
e.getClass());
assertEquals("空指针异常", e.getMessage());
}
}
@Override
protected void tearDown() throws Exception {
System.out.println("tearDown()");
}