`
baobaoupup
  • 浏览: 472423 次
文章分类
社区版块
存档分类
最新评论

JUnit4概述

 
阅读更多
JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。

先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在Java里面可以用来和public、static等关键字一样来修饰类名、方法名、变量名。修饰的作用描述这个数据是做什么用的,差不多和public描述这个数据是公有的一样。想具体了解可以看Core Java2。废话不多说了,直接进入正题。

我们先看一下在JUnit 3中我们是怎样写一个单元测试的。比如下面一个类:
public class AddOperation {
public int add(int x,int y){
return x+y;
}
}

我们要测试add这个方法,我们写单元测试得这么写:
import junit.framework.TestCase;
import static org.junit.Assert.*;
public class AddOperationTest extends TestCase{

public void setUp() throwsException {
}

public void tearDown() throwsException {
}

public void testAdd() {
System.out.println(\"add\");
int x = 0;
int y = 0;
AddOperation instance = new AddOperation();
int expResult = 0;
int result = instance.add(x,y);
assertEquals(expResult,result);
}
}

可以看到上面的类使用了JDK5中的静态导入,这个相对来说就很简单,只要在import关键字后面加上static关键字,就可以把后面的类的static的变量和方法导入到这个类中,调用的时候和调用自己的方法没有任何区别。


我们可以看到上面那个单元测试有一些比较霸道的地方,表现在:
1.单元测试类必须继承自TestCase。
2.要测试的方法必须以test开头。

如果上面那个单元测试在JUnit 4中写就不会这么复杂。代码如下:
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;

/**
*
* @author bean
*/
public class AddOperationTest extends TestCase{

public AddOperationTest() {
}

@Before
public void setUp() throwsException {
}

@After
public void tearDown() throws Exception{
}

@Test
public void add() {
System.out.println(\"add\");
int x = 0;
int y = 0;
AddOperation instance = newAddOperation();
int expResult = 0;
int result = instance.add(x,y);
assertEquals(expResult,result);
}

}
我们可以看到,采用Annotation的JUnit已经不会霸道的要求你必须继承自TestCase了,而且测试方法也不必以test开头了,只要以@Test元数据来描述即可。
从上面的例子可以看到在JUnit 4中还引入了一些其他的元数据,下面一一介绍:
@Before:
使用了该元数据的方法在每个测试方法执行之前都要执行一次。

@After:
使用了该元数据的方法在每个测试方法执行之后要执行一次。

注意:@Before和@After标示的方法只能各有一个。这个相当于取代了JUnit以前版本中的setUp和tearDown方法,当然你还可以继续叫这个名字,不过JUnit不会霸道的要求你这么做了。

@Test(expected=*.class)
在JUnit4.0之前,对错误的测试,我们只能通过fail来产生一个错误,并在try块里面assertTrue(true)来测试。现在,通过@Test元数据中的expected属性。expected属性的值是一个异常的类型

@Test(timeout=xxx):
该元数据传入了一个时间(毫秒)给测试方法,
如果测试方法在制定的时间之内没有运行完,则测试也失败。

@ignore:

该元数据标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。


推荐完整的junit4教程,下载地址:

http://download.csdn.net/source/3510133


分享到:
评论

相关推荐

    J2EE复习积累(三)-JUnit4概述(三)

    NULL 博文链接:https://sunlongan666.iteye.com/blog/1881116

    Junit4简单实用

    JUnit4概述,在Eclipse中使用JUnit4进行单元测试(初级篇、中级篇、高级篇)

    Junit概述以及相关知识

    Junit概述,Junit相关知识,ppt格式,适合自学的文档

    Spring.3.x企业应用开发实战(完整版).part2

    16.2.1 JUnit 4概述 16.2.2 JUnit 4生命周期 16.2.3 使用JUnit 16.3 模拟利器Mockito 16.3.1 模拟测试概述 16.3.2 创建Mock对象 16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王...

    Spring3.x企业应用开发实战(完整版) part1

    16.2.1 JUnit 4概述 16.2.2 JUnit 4生命周期 16.2.3 使用JUnit 16.3 模拟利器Mockito 16.3.1 模拟测试概述 16.3.2 创建Mock对象 16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王...

    repobee-junit4:用于RepoBee的插件,该插件在克隆的存储库上运行JUnit4

    概述这是的插件,可在克隆的学生存储库中的生产类上运行JUnit4测试类。 它使教师和助教能够以一种有序,公正的方式快速评估学生所做的工作。 该插件挂接到repos clone命令,并在将其克隆到磁盘后在repos上执行测试类...

    junit-toolbox:使用JUnit 4编写自动化测试的有用类

    概述 JUnit工具箱提供了一些有用的类,用于使用JUnit编写自动化测试: 用于使用多个并发运行的线程编写压力测试的Helper类 帮助器类等待异步操作 使用多个工作线程同时执行所有@Test方法以及使用不同参数分配对@...

    JUnit设计模式分析

    关键词:单元测试 JUnit 设计模式 1 JUnit概述1.1 JUnit概述 JUnit是一个开源的java测试框架,它是Xuint测试体系架构的一种实现。在JUnit单元测试框架的设计时,设定了三个总体目标,第一个是简化测试的编写,...

    Java-Junit-Mockito

    课程概述步骤列表JUnit步骤01:需要单元测试步骤02:设置您的第一个JUnit步骤03:第一个成功的JUnit。 Green Bar和assertEquals步骤04:重构您的第一个JUnit测试步骤05:第二个JUnit示例assertTrue和assertFalse...

    JUnit单元测试入门简介+实例

    相关的概念、单元测试概述、Junit入门简介、实例

    分析JUnit框架源代码

    本文内容包括:概述Junit简介一个简单的JUnit程序实例JUnit源代码分析总结参考资料本文细致地描述了JUnit的代码实现,在展示代码流程UML图的基础上,详细分析JUnit的内部实现代码的功能与机制,并在涉及相关设计模式...

    Java初了解(二)—Junit4简单了解

    一、概述 JUnit是一个Java语言的单元测试框架。 多数Java的开发环境都已经集成了JUnit作为单元测试的工具。 Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。 JUnit可广泛用于工业和作为支架(从...

    willtest:在 JUnit 测试中设置和使用 Selenium WebDriver 的简单方法

    概述 Willtest 通过提供一组和其他实用程序类使 JUnit 和 Selenium 的集成更容易,这些类可让您完成以下任务: 管理 WebDriver 实例的生命周期 报告功能,如保存日志、屏幕截图和 HTML 源代码 从 javascript 警报和...

    xray-junit-extensions:增强的JUnit 5与Xray Test Management的Jira集成

    概述 可以在测试管理工具中跟踪以@Test方法实现的自动化脚本的结果,以提供有关这些脚本所针对的质量方面及其影响的见解。 因此,在执行测试期间附加一些相关信息非常重要,以便以后可以在测试管理工具(例如 )中共...

    governator-junit-runner:Junit Runner 支持基于 Governator 的模块

    概述 该项目旨在简化在 JUnit 测试中集成 。 这是使用此模块的 Governator Junit 测试的外观: @RunWith ( GovernatorJunit4Runner . class) @LifecycleInjectorParams ( modules = SampleModule . class, ...

    AndroidJunitRunnerSample:2015年10月17日的UnitTest项目

    AndroidJUnitRunner示例新的android测试运行程序为Android测试带来了Junit4支持。 该样本快速概述了一些新功能,例如测试注释,参数化测试和测试套件创建。 CalculatorTest.java包含用于计算器逻辑的JUnit4样式单元...

    cucumber_jacoco_junit_gradle:Jacoco涵盖了Cucumber和JUnit测试的示例Gradle项目

    概述 为了满足较高的安全标准,假设已验证这些要求,并且一旦通过验证,则软件的质量应该很好,因此,一个软件应该具有较高和可能较低水平的软件要求。 该示例项目的目的是展示如何捕获高低级需求以及如何使验证...

    基于java的企业级应用开发:Spring概述.ppt

    方便程序的测试 Spring提供了对Junit4的支持,可以通过注解方便的测试Spring程序。 方便集成各种优秀框架 Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等...

Global site tag (gtag.js) - Google Analytics