JUnit单元测试工具

1.JUnit4快速入门

1.1 JUnit4的简洁:

JUnit4的官网(junit.org)有详细定义:JUnit is a simple framework to write repeatable tests.It is an instance of the xUnit architecture for unit testing framework.意思是:JUnit是一个用于编写可复用测试集的简单框架,它是xUnit的子集。那么xUnit是什么呢?xUnit是一套基于测试驱动开发的测试框架。使我们能够快速的写单元测试。xUnit的家族成员众多,其中包括Python的单元测试PythonUnit,面向C++的CppUnit以及用于Java丹云测试的JUnit等。

JUnit托管在gitHub上,网址为http://github.com/junit-team/junit/wiki/Download-adn-Install,JUnit有两个包,分别是junit.jar和hamcrest-core.jar。

1.2 JUnit3和JUnit4的区别:

①JUnit4所有的测试方法前用@test注释,JUnit3的测试方法必须是以test作为前缀。

②JUnit3必须继承junit.framework.TestCasel类,而JUnit4不需要继承任何类

③另外,JUnit3初始化资源的方法必须命名为setUp,测试结束后,释放资源的方法必须命名为tearDown,而JUnit4完全没有限制

1.3 我们为什么要使用JUnit呢?

使用断言机制,将期望的结果跟运行的结果比对,给出测试结果。方便、高效、分离。

1.4 如何开发测试用例

工具:eclipse,由于eclipse包含了JUnit4,所以不再单独下载。

首先贴一下代码结构图:

①新建一个java project,命名为junit4Demo;

②在src上,创建一个新的包:com.mac.unit;

③写一个用于被测试的类,在包com.mac.unit下,命名为Calculator,该类有四个方法,进行加减乘除运算;

package com.mac.unit;

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){
		return a / b ;
	}
}

④接下来,我们导入JUnit包,在项目上,单击右键,build path->Add Library->JUnit->next->选择JUnit4->Finish.这样,在项目的树状结构中就能看到JUnit4的文件夹。

⑤新建测试类,在当前包中,new ->JUnit Test Case,命名为CalculatorTest。这个测试类会自动生成一个模板,我们仿照它写一个我们自己的测试方法。

package com.mac.unit;

import static org.junit.Assert.*;

import org.junit.Test;

public class CalculatorTest {

	@Test
	public void test() {
		fail("Not yet implemented");
	}

}

添加我们的方法,并将test方法删除:

package com.mac.unit;

import static org.junit.Assert.*;

import org.junit.Test;

public class CalculatorTest {

	@Test
	public void add(){
		assertEquals(6,new Calculator().add(3,3));
	}
}

⑥运行上面这个测试类CalculatorTest,右键->run as ->JUnit Test.运行结果如下图:

扩展一下:

介绍一下JUnit视图:

Runs:表示测试正确执行的方法

Errors:表示错误的方法

Failures:表示期望结果跟测试结果不相同的方法

绿色的状态条表示正常执行,红色的状态条表示出现错误或者异常。

包下面的方法前面有绿色对号,表示正常执行,否则就是出现错误或者出现异常的方法。

2.JUnit4使用详解

2.1 JUnit4最佳实践

在快速入门中,将测试代码和被测试代码放在同一个包下面,显然这样做不合理,测试代码孩子是在开发时用到,在产品中是不会出现的,因此,需要优化代码结构。

在项目的下面新建一个源文件夹(Source Folder)test,将测试代码全部放在test下面,这样做得目的是源代码和测试代码分离,并且查阅方便。

在产品最终发布是,将该目录删除即可,不会对项目产生任何影响。

注意:测试包名和被测试代码包名必须相同。

进一步完善测试代码:

package com.mac.unit;
import static org.junit.Assert.*;
import org.junit.Test;

public class CalculatorTest {
	@Test
	public void testAdd(){
		assertEquals(6,new Calculator().add(3, 3));
	}
	@Test
	public void testSubtract(){
		assertEquals(5,new Calculator().subtract(11, 6));
	}
	@Test
	public void testMultiply(){
		assertEquals(9,new Calculator().multiply(3, 3));
	}
	@Test
	public void testDivide(){
		assertEquals(4,new Calculator().divide(12, 3));
	}
}

测试结果:

JUint的使用技巧:

①如果我们只想对某个方法进行测试,只需要打开测试代码的树状结构,选中要测试的方法,右键->Run as->JUnit Test即可。

②现在假设我们有很多类,类又有很多方法,我们一个一个的敲出来,这个有点庞大,那么,可否有简单的方法呢?答案是肯定。

项目名称(假如我的项目是Junit4Demo)上右键->new->other->在选择向导中输入“junit”->选择JUnit Test Case(其实就在Java->JUnit->JUnit Test Case)->next,在source folder中选择test,name为CalculatorTest3,Class under test选择被测试的类(com.mac.unit.Calculator),然后next,选择要被测试类要测试的方法,然后Finish。


以上操作生成的代码如下:

#CalculatorTest3.java

/**
 *
 */
package com.mac.unit;

import static org.junit.Assert.*;
import org.junit.Test;

/**
 * @author zhoujunwen
 *
 */
public class CalculatorTest3 {

	/**
	 * Test method for {@link com.mac.unit.Calculator#add(int, int)}.
	 */
	@Test
	public void testAdd() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link com.mac.unit.Calculator#subtract(int, int)}.
	 */
	@Test
	public void testSubtract() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link com.mac.unit.Calculator#multiply(int, int)}.
	 */
	@Test
	public void testMultiply() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link com.mac.unit.Calculator#divide(int, int)}.
	 */
	@Test
	public void testDivide() {
		fail("Not yet implemented");
	}

}

框架代码已经生成,那么接下来就需要自己去实现测试的逻辑。

本例中的逻辑代码,即测试代码如2.1中最佳实践中优化完善的代码一样,此处就不做展示。

③最简单的生成测试代码:右键选中被测试的类,new->JUnit Test Case,在JUnit TestCase窗口中,选择new JUnit 4 test,Source folder选择test源文件,如下图所示:

下面就和②一样了。

PS: (1).测试方法上必须使用@test进行修饰

      (2).测试服昂发必须使用public void 进行修饰,不能带任何的参数

      (3).新建一个源代码目录来存放我们的测试代码 

      (4).测试类的包应该和被测试类的包保持一致

      (5).测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖

      (6).测试类使用Test作为类名的后缀(不是必须的)

      (7).测试方法使用test作为方法名的前缀(不是必须的)

3.JUnit4的深入使用

4.JUnit4在web项目中的使用

时间: 2024-08-31 14:15:14

JUnit单元测试工具的相关文章

单元测试工具及资源推荐

本文将简单介绍一下如下几种单元测试工具以及推荐一些学习资源. 1.NUnit 2.TestDriven.Net 3.NUnitForms 4.NUnitAsp 一.NUnit 提起大名鼎鼎的NUnit,我想没有几个不知道吧?NUnit是一个专门针对于.NET的单元测试框架.在这之前有针对Java的JUnit,针对 C++的 CPPUnit,它们都是属于xUnit家族. NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等

数据库单元测试工具-SQLUnit

  原文信息 数据库单元测试工具-SQLUnit 前言 正如之前所说,我已经改变了原有写代码方式.不是立马就写出测试用例的"测试驱动开发"(我知道这种开发理论很难站住脚).但当我预计到这种编程方式必定存在问题时,这已经是一个好的开始了.在一条带有自动序列号的主键的 INSERT 语句下,我是否应该转换程序中异常为自己的系统的错误代码?或者仅仅让 RA-00001 传播开?我采取的办法是,仅仅弹出 Oracle 自身提示的错误码,没有必要自己为出现错误再重新创建一套错误码机制.如果你在某

如何寻找一个好的Javascript单元测试工具

让我们看看Javascript单元测试的现状和测试工具. 1.JsUnit 我们已经在使用它来作为我们的单元测试工具了. 优势: ●可以被ant构建文件调用: ●启动浏览器来运行测试用例: ●Eclipse插件支持: 缺点: ●需要启动浏览器来运行测试用例: ●不支持用js文件来写单元测试代码:它必须嵌入在html文件中: ●它已经好几年没更新了: 注意: ●有一个测试工具叫JsUnit(2): ●"ant"是一个开源构建工具:之所以叫"Ant"因为它很小,但是可以

java中Junit单元测试

Junit元测试 单元测试(junit testing),是指对软件中的最小可测试单元进行检查和验证.Java里单元指一个类. JUnit ,是一个开源的Java单元测试框架,是 Java的标准单元测试库,是非常重要第三方 Java 库,由 Kent Beck 和 Erich Gamma 开发. Junit作为一个软件测试的工具,JUnit可以不破坏java原代码,使用方便,添加快捷,代码量少,可视化的测试. JUnit单元测试步骤: 1.导入包junit测试包:JUnit测试版本,3.81版,

Maven管理的Spring Web项目集成JUnit单元测试

JUnit是一套优秀的单元测试框架,而Maven是优秀的Java项目构建和管理工具,两者结合可以很方便地对项目进行自动化测试. 一般的简单Java应用就不多说了,一些框架会提供针对junit的扩展,使得测试变得更容易,例如Spring官方就提供了spring-test,用于提供获取ApplicationContext等方面的支持. 首先要做的是,改变JUnit的实际执行类,将默认的执行类Suite替换为Spring提供的SpringJUnit4ClassRunner,也就是在测试类前面加上一个注

JQuery团队打造的javascript单元测试工具QUnit介绍_jquery

什么是单元测试? 单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.单元测试主要是用来检验程式的内部逻辑,也称为个体测试.结构测试或逻辑驱动测试.通常由撰写程式码的程式设计师负责进行. 通常来说,程式設計師每修改一次程式就會進行最少一次單元測試,在編寫程式的過程中前後很可能要進行多次單元測試,以證實程式達到軟件規格書(en:Specification)要求的工作目標,沒有臭蟲:雖然单元测试不是什么必须的,但也不坏,這牽涉到專案管理的政策決定. -- 维基百科

Junit 单元测试

Junit是一个单元测试工具,eclipse自带. 依赖: // http://mvnrepository.com/artifact/junit/junit compile group: 'junit', name: 'junit', version: '4.12' 1.使用步骤 1.先写源文件,假设要测验的是A.java. 2.在packageExplorer视图中,右击A.java源文件,选择 new| JUnit Test Case 图1 测试类自动生成 3.单击next出现下面的对话框.

项目添加Maven支持后运行JUnit单元测试出现错误

项目添加Maven支持后,运行JUnit单元测试,出现一下错误: ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [com.travelsky.tdp.pkgStock.integration.logback.appender.mail.SMTPAppender]. ch.qos.logback.core.util.DynamicClassLoading

体验PHP下的单元测试工具:PHPUnit

今天接到了个任务,需要对数字进行计算,因为涉及到整数,小数,和科学计数法等很多条件,所以人工测试非常麻烦,于是想到了PHP的单元测试工具PHPUnit,所以写个文档备查. 看了PHPUnit的文档之后基本有了一些了解, http://pear.php.net/manual/en/packages.php.phpunit.intro.php 工作流程如下: 1.设计你的class/API 2.创建测试程序集 3.实现class/API 4.运行测试 5.修正测试失败或错误,回到第4步. 我们来举个