1.
简介
我
们在编写大型程序的时候,需要写成千上万的方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这
一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为我们今后如果需要对程序进行扩展,用到某个函数的其他功能,而这个功能有bug的
话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。传统的编程方式,
进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。正因为如此麻烦,所以
程序员们编写单元测试的热情不是很高。于是有一个牛人推出了单元测试包,大大简化了进行单元测试所要做的工作,这就是JUnit。
JUnit 是针对 Java 语言的一个单元测试框架,它被认为是迄今为止所开发的最重要的第三方 Java 库。 它已经成为Java语言事实上的标准单元测试库。JUnit的易用性无疑是它受欢迎的主要原因。JUnit4是JUnit框架有史以来最大的改进,其主要利用了Java5的Annotation特性,大大简化了测试用例的编写。
2.
在Eclipse中使用JUnit4 进行单元测试
下面主要通过一个实例,简单介绍在Eclipse (Helios Service Release 2 version)中如何使用JUnit4来进行单元测试。这只是一个简单的速成教程,所以涉及的知识点会非常少,只是让大家了解下JUnit4的大概使用流程。
取的例子很简单,只是对计算器的加法功能实现测试。首先我们新建一个名为 “JUintTest”的Java Project,创建一个Caculator类,实现其add功能。Caculator类的代码实现如下:
package com.rigel.ut;
/**
* 一个计算器功能类
*
* */
public class Calculator {
private int result; /* 保存计算的结果 */
/**
* 实现加法功能
* 为了测试 @Test 注解
* */
public void add(int a, int b) {
result = a + b;
}
public void setResult(int result) {
this.result = result;
}
public int getResult() {
return this.result;
}
}
接下来导入JUnit4所需要的JAR包,右键项目,选择属性,在Libraries Tab中,点击 “Add Library”,选择“JUint“,再选择”JUnit4“,然后确定。如下图所示:
如果Eclipse中没有装JUnit的插件,可自己到网站上去下载JUnit4的lib包,将对应依赖的JAR文件导入。
为了更好的区分源代码与测试代码,我们推荐将测试代码放在Project的 test 目录下,与 src 目录对应,单测代码应当尽量与被测代码一致。最好整个项目的目录结构如下图所示:
其中,为了使 test 目录可以作为存放源代码的目录,需将 test 目录添加到 Source 中,如下图所示,点击”Add Folder“,选中 ”test“目录,添加进来就可以。如果没有这样添加的话,会导致在 ”test“目录中无法添加包。
实现 Calculator 的测试类 CalculatorTest,其内容如下:
package com.rigel.ut;
import org.junit.Assert;
import org.junit.Test;
public class CalculatorTest {
private Calculator calc = new Calculator();
@Test
public void testAdd() {
calc.add(0,4);
int result = 4;
// 通过 Assert 对 function 功能进行测试
Assert.assertEquals(result, calc.getResult());
}
}
这样,接下来就可以运行这个TestCase来查看测试结果,点击”Run“,选择”Run As JUnit Test“ 。或者直接使用快捷键 ”Ctrl + F11“,可以看到,最后的测试结果如下图所示:
表示代码测试成功。 OK,JUnit4的单元测试流程基本就是这样。
我
们总结一下。要对你的代码进行单元测试,首先导入所需要依赖的JUint4的JAR包,然后新建一个 test
目录来专门存放对应的TestCase,最好在对应的包下编写你的TestCase。上面例子中的”CalculatorTest“类中,使用了
@Test 标签来标识一个测试方法,方法内通过
Assert(断言)来判断函数的返回结果是否与预期一致。下一章节会详细分析JUint4中常见的一些用法,并对主要的标签进行介绍。这一章节到此结
束。谢谢。
1.
简介
我
们在编写大型程序的时候,需要写成千上万的方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这
一小部分功能是正确的。但是,我们同时应该确保每一个函数都完全正确,因为我们今后如果需要对程序进行扩展,用到某个函数的其他功能,而这个功能有bug的
话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行测试,这样的测试我们称之为单元测试。传统的编程方式,
进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。正因为如此麻烦,所以
程序员们编写单元测试的热情不是很高。于是有一个牛人推出了单元测试包,大大简化了进行单元测试所要做的工作,这就是JUnit。
JUnit 是针对 Java 语言的一个单元测试框架,它被认为是迄今为止所开发的最重要的第三方 Java 库。 它已经成为Java语言事实上的标准单元测试库。JUnit的易用性无疑是它受欢迎的主要原因。JUnit4是JUnit框架有史以来最大的改进,其主要利用了Java5的Annotation特性,大大简化了测试用例的编写。
2.
在Eclipse中使用JUnit4 进行单元测试
下面主要通过一个实例,简单介绍在Eclipse (Helios Service Release 2 version)中如何使用JUnit4来进行单元测试。这只是一个简单的速成教程,所以涉及的知识点会非常少,只是让大家了解下JUnit4的大概使用流程。
取的例子很简单,只是对计算器的加法功能实现测试。首先我们新建一个名为 “JUintTest”的Java Project,创建一个Caculator类,实现其add功能。Caculator类的代码实现如下:
07 |
public class Calculator { |
11 |
public void add( int a, int b) { |
15 |
public void setResult( int result) { |
18 |
public int getResult() { |
接下来导入JUnit4所需要的JAR包,右键项目,选择属性,在Libraries Tab中,点击 “Add Library”,选择“JUint“,再选择”JUnit4“,然后确定。如下图所示:
如果Eclipse中没有装JUnit的插件,可自己到网站上去下载JUnit4的lib包,将对应依赖的JAR文件导入。
为了更好的区分源代码与测试代码,我们推荐将测试代码放在Project的 test 目录下,与 src 目录对应,单测代码应当尽量与被测代码一致。最好整个项目的目录结构如下图所示:
其中,为了使 test 目录可以作为存放源代码的目录,需将 test 目录添加到 Source 中,如下图所示,点击”Add Folder“,选中 ”test“目录,添加进来就可以。如果没有这样添加的话,会导致在 ”test“目录中无法添加包。
实现 Calculator 的测试类 CalculatorTest,其内容如下:
03 |
import junit.framework.Assert; |
04 |
import org.junit.Test; |
05 |
import com.rigel.ut.Calculator; |
10 |
public class CalculatorTest { |
16 |
public void testAdd() { |
17 |
Calculator calc = new Calculator(); |
21 |
Assert.assertEquals(result, calc.getResult()); |
这样,接下来就可以运行这个TestCase来查看测试结果,点击”Run“,选择”Run As JUnit Test“ 。或者直接使用快捷键 ”Ctrl + F11“,可以看到,最后的测试结果如下图所示:
表示代码测试成功。 OK,JUnit4的单元测试流程基本就是这样。
我
们总结一下。要对你的代码进行单元测试,首先导入所需要依赖的JUint4的JAR包,然后新建一个 test
目录来专门存放对应的TestCase,最好在对应的包下编写你的TestCase。上面例子中的”CalculatorTest“类中,使用了
@Test 标签来标识一个测试方法,方法内通过
Assert(断言)来判断函数的返回结果是否与预期一致。下一章节会详细分析JUint4中常见的一些用法,并对主要的标签进行介绍。这一章节到此结
束。谢谢。