Junit单元测试

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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()");

}

相关文档
最新文档