在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

时间:2023-01-22 10:30:12

本文是在前人的基础上完善而成http://blog.csdn.net/andycpp/article/details/1327147

由于eclipse开发工具集成了JUnit,所以在eclipse中无需下载和安装,直接将JUnit4单元测试包引入这个项目中便可使用。

第一步:在eclipse中新建一个项目:JUnitTestProject,编写一个待测类:Calculator。项目结构如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

Calculator类中的代码为:

package com.edward.junit;

public class Calculator {
public int add(int a, int b)
{
return a + b;
}

public int subtract(int a, int b)
{
return a - b;
}

public int multiply(int a, int b)
{
return a * b;
}

public int divide(int a, int b) throws Exception
{
if(b==0){
throw new Exception("除数不能为0");
}
return a / b;
}
}

第二步:将JUnit单元测试包引入这个项目:选中项目名JUnitTestProject,右键弹出菜单中选择最后一项Properties(属性),在弹出的对话框中依次选择:Java Build Path /Libraries/Add Library…

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

点击Add Library...后,弹出的对话框,如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

选择JUnit,点击Next,进入JUnit Library界面,如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

选择JUnit4后,点击Finish。可以看到JUnit4已经添加到Libraries中。

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

点击OK,完成JUnit4单元测试包的导入,会发现JUnit4出现在项目列表中。

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

第三步,生成JUnit测试框架:采用并行树的方式放置测试代码,保证测试代码与被测代码的独立性,所以首先在项目目录下,创建文件test:项目名右键new再选择SourceFolder,如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇


在弹出的对话框中,Folder name处,输入文件名:test。如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

点击Finish,会发现项目工程的结构如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

项目名JUnitTestProject右键,选择new,再选择JUnit Test Case,若没有,则选择Other…,如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

选择Java目录下,JUnit目录下,JUnit Test Case弹出对话框,如下图:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇
点击(1)处,在弹出的对话框中,将存放目录更改为test,如下图:
在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇
在(2)处输入类名CalculatorTest 点击(3)处,指定待测类的类名,如下图:
在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇
其他地方默认即可,点击Next, 系统会自动列出待测类中包含的方法,选择你要进行测试的方法(仅对图中四个方法add、subtract、multiply、divide进行测试),如图: 在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇
点击Finish,系统会自动生成一个新类CalculatorTest,里面包含一些空的测试方法。只需要将这些测试方法稍作修改即可使用,项目工程的结构,如下图:
在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

测试类CalculatorTest中的代码为:

package com.edward.junit;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {
private Calculator calculator = null;//一、创建被测对象
@Before
public void setUp() throws Exception {
//生成成员变量实例
calculator = new Calculator();//二、初始化被测对象
}
//三、构造测试方法
@Test
public void testAdd() {
int result=calculator.add(1,2);//四、调用被测方法,取得方法的返回值或系统状态的变化
//判断方法的返回结果 //五、创“建期待结果”即:第一个参数期望值,
assertEquals(3,result);//六、调用合适的Assert方法
}//第一个参数是期望值,第二个参数是要验证的值;

@Test
public void testSubtract() {
int result = calculator.subtract(1, 2);
assertEquals(-1, result);
}

@Test
public void testMultiply() {
int result = calculator.multiply(2, 3);
assertEquals(6, result);
}

@Test
public void testDivide() {
int result = 0;
try {
result = calculator.divide(12, 3);
} catch (Exception e) {
e.printStackTrace();
//如果抛出异常,证明测试失败,没有通过,没通过的测试计数在Failures中、
fail();//如果不加这一会,程序进入到catch后,无法判断其失败。
}
// 判断方法的返回结果
assertEquals(4, result);// 第一个参数是期望值,第二个参数是要验证的值
}
}

第四步,运行测试代码,按照上述代码修改完毕后,在CalculatorTest类上点右键,选择“RunAs / JUnit Test”来运行我们的测试,如下图所示:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

结果运行如下图所示:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

若待测类中存在bug,比如对Calculator类中的add( )方法和subtract( )做以下更改:

public int add(int a, int b)
{
return a - b;//此处存在bug,正确的代码应该是a + b;
}
public int subtract(int a, int b)    {        return a + b;//此处存在bug,正确的代码应该是a - b;    }
重复第四步,运行结果如下:

在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇在eclipse开发工具中使用JUnit4进行单元测试详解(一)入门篇

进度条显示为褐色,表示测试发现错误,具体测试结果在对话框中均匀体现:总共运行了4个测试Runs:4/4;测试类运行正常未发现问题Error:0;发现2处测试失败Failures:2。