Java程序的单元测试-进入junit的天堂
2007-07-28 22:48
567 查看
作者:Keld H. Hansen 翻译:CManLH 原文地址
一、介绍
二、进入junit的天堂
三、Round类
四、分析并获取测试用例
junit简介
junit是一个以java作为开发语言的开源项目,她为单元测试提供了一个非常棒的架构。使用junit的话,上节提到的代码就会演变成:
assertEquals(0, c.parUpToHole(0));
assertEquals(8, c.parUpToHole(2));
assertEquals(72, c.parUpToHole(18));
如此优美的代码,是不是更合符合我们的心愿。同时,junit也提供了更好的报错机制。例如,将最后一行的"72"改成"71",junit会给出如下消息:
There was 1 failure:
1) testSomething(hansen.playground.TestCourse)
junit.framework.AssertionFailedError:
expected:<71> but was: <72>
此时此刻,我们还自动的获得了表达式“c.parUpToHole(18)”的实际值。
junit提供了许多的功能,但在下面的例子中,将只展示其中最普遍、最简单的几个。如果你有兴趣深入junit,发挥其强大的作用,请登录www.junit.org,那儿有一些很有用的文章。
要想junit发挥作用,我们必须遵守一些规定或者法则。暂如下:
1、你设计的测试类必须继承junit类中的TestCase类
2、如果你的测试用例拥有一些共同的数据或者操作,请在setUp方法中做这些事情
3、测试代码(例如:调用"assertEquals")必须放在一个或者多个名字以"test"开头的方法中
如此,上面的三个测试会演变成如下类:
package nansen.playground;
import junit.framework.*;
public class TestCourse extends TestCase ...{
private Course c;
public TestCourse(String name) ...{
super(name);
}
protected void setUp() ...{
c = new Course();
c.setName("St. Andrews");
int[] par = ...{4,4,4,4,5,4,4,3,4,4,3,4,4,5,4,4,4,4};
c.setPar(par);
}
public void testSomething() ...{
assertEquals(0, c.parUpToHole(0));
assertEquals(8, c.parUpToHole(2));
assertEquals(72, c.parUpToHole(18));
}
}
注意:我们导入了junit.framework包,它可以从www.junit.org下载。setUp方法有一个兄弟方法:tearDown,专门用来释放setUp方法分配的资源。
运行junit测试的工具
junit提供了其测试程序的的运行工具,同样采用java编写。它可以在命令行中通过批处理方式运行,例如:java junit.textui.TestRunner hansen.playground.TestCourse
或者也可以调用AWT或者Swing的可视化界面:
java junit.awtui.TestRunner hansen.playground.TestCourse
-- 或者 --
java junit.swingui.TestRunner hansen.playground.TestCourse
它们会建立相应的GUI界面:
通过输入类名,按下“Run”按钮就可以测试相应程序了。
对于自动化测试,我们倾向于批处理方式。如果这样,其实可以直接在测试程序本身实现,需要做的就是添加一个main方法:
public static void main(String[] args) ...{
junit.textui.TestRuuner.run(TestCourse.class);
}
assert-方法
其实还有许多类似上面代码中"assertEquals"的方法,其中重要的一些如下:
一、介绍
二、进入junit的天堂
三、Round类
四、分析并获取测试用例
junit简介
junit是一个以java作为开发语言的开源项目,她为单元测试提供了一个非常棒的架构。使用junit的话,上节提到的代码就会演变成:
assertEquals(0, c.parUpToHole(0));
assertEquals(8, c.parUpToHole(2));
assertEquals(72, c.parUpToHole(18));
如此优美的代码,是不是更合符合我们的心愿。同时,junit也提供了更好的报错机制。例如,将最后一行的"72"改成"71",junit会给出如下消息:
There was 1 failure:
1) testSomething(hansen.playground.TestCourse)
junit.framework.AssertionFailedError:
expected:<71> but was: <72>
此时此刻,我们还自动的获得了表达式“c.parUpToHole(18)”的实际值。
junit提供了许多的功能,但在下面的例子中,将只展示其中最普遍、最简单的几个。如果你有兴趣深入junit,发挥其强大的作用,请登录www.junit.org,那儿有一些很有用的文章。
要想junit发挥作用,我们必须遵守一些规定或者法则。暂如下:
1、你设计的测试类必须继承junit类中的TestCase类
2、如果你的测试用例拥有一些共同的数据或者操作,请在setUp方法中做这些事情
3、测试代码(例如:调用"assertEquals")必须放在一个或者多个名字以"test"开头的方法中
如此,上面的三个测试会演变成如下类:
package nansen.playground;
import junit.framework.*;
public class TestCourse extends TestCase ...{
private Course c;
public TestCourse(String name) ...{
super(name);
}
protected void setUp() ...{
c = new Course();
c.setName("St. Andrews");
int[] par = ...{4,4,4,4,5,4,4,3,4,4,3,4,4,5,4,4,4,4};
c.setPar(par);
}
public void testSomething() ...{
assertEquals(0, c.parUpToHole(0));
assertEquals(8, c.parUpToHole(2));
assertEquals(72, c.parUpToHole(18));
}
}
注意:我们导入了junit.framework包,它可以从www.junit.org下载。setUp方法有一个兄弟方法:tearDown,专门用来释放setUp方法分配的资源。
运行junit测试的工具
junit提供了其测试程序的的运行工具,同样采用java编写。它可以在命令行中通过批处理方式运行,例如:java junit.textui.TestRunner hansen.playground.TestCourse
或者也可以调用AWT或者Swing的可视化界面:
java junit.awtui.TestRunner hansen.playground.TestCourse
-- 或者 --
java junit.swingui.TestRunner hansen.playground.TestCourse
它们会建立相应的GUI界面:
通过输入类名,按下“Run”按钮就可以测试相应程序了。
对于自动化测试,我们倾向于批处理方式。如果这样,其实可以直接在测试程序本身实现,需要做的就是添加一个main方法:
public static void main(String[] args) ...{
junit.textui.TestRuuner.run(TestCourse.class);
}
assert-方法
其实还有许多类似上面代码中"assertEquals"的方法,其中重要的一些如下:
方法名 | 作用 |
assertEquals(a,b) | 断言两个参数相等。其中a和b必须是同一种数据类型或者对象 |
assertTrue(boolean) | 断言给出的条件为真 |
assertNull(Object) | 断言参数对象为Null |
assertSame(Object, Object) | 断言两个参数对象引用的是同一个对象 |
相关文章推荐
- Java单元测试工具:JUnit4(二)——JUnit使用详解
- java单元测试JUnit框架原理与用法实例教程
- Java单元测试工具:JUnit4(三)——JUnit详解之运行流程及常用注解
- Java单元测试工具:JUnit4(一)——概述及简单例子
- Java单元测试(Junit+Mock+代码覆盖率)
- Eclipse使用jUnit4对MapReduce程序进行单元测试
- Java单元测试Junit(三)使用EasyMock扩展Junit
- Java单元测试(Junit+Mock+代码覆盖率)
- JAVA Debug 调试 java application JUnit单元测试
- Ant+Junit产生java的单元测试报告
- 【JUnit4】JUnit4——Java单元测试必备工具(第1章概述 第2章入门 第3章 JUnit4使用详解 )
- Java之Junit单元测试、包含Log4j、classpath说明等
- 用JUnit框架实现Java单元测试
- 深入java--单元测试JUnit
- Java单元测试工具:JUnit4(一)——概述及简单例子
- Maven的安装配置及初次创建项目与java单元测试工具JUnit
- Java程序的单元测试-分析并获取测试用例
- Junit单元测试(java unit)
- Java单元测试工具:JUnit4(三)——JUnit详解之运行流程及常用注解
- Java单元测试工具:JUnit4——JUnit详解之运行流程及常用注解