`

JUnit4 概述

    博客分类:
  • Test
 
阅读更多

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() throws Exception {
      }

      public void tearDown() throws Exception {
      }

      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() throws Exception {
      }

      @After
      public void tearDown() throws Exception {
      }

      @Test
      public void add() {
          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);
      }
}

 

我们可以看到,采用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(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。

分享到:
评论

相关推荐

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

    **J2EE复习积累(三) - JUnit4概述(三)** JUnit4是Java开发中最常用的单元测试框架,它是Java领域中进行测试驱动开发(TDD)和行为驱动开发(BDD)的重要工具。本篇文章将深入探讨JUnit4的核心概念、功能和使用方法。 *...

    junit4学习文档

    #### 一、JUnit4 概述 JUnit4 是 JUnit 测试框架的一个重大更新版本,它充分利用了 Java 5 的注解(Annotation)特性来简化测试用例的编写过程。注解是一种元数据,用于描述程序中的元素如类、方法或变量的作用。与...

    Junit4教程

    Junit4概述 JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。Annotation是Java5中的一种新特性,它允许我们在代码中添加元数据,以描述数据的更多信息。在JUnit...

    Junit4单元测试必备入门教程

    JUnit4概述 -------- JUnit4是JUnit框架有史以来最大的改进,其主要目标是利用Java5的Annotation特性简化测试用例的编写。Annotation是一种元数据,用于描述数据。在Java中可以用来和public、static等关键字一样来...

    Junit4使用教程详解+源码下载.rar

    一、JUnit4概述 JUnit4是JUnit系列的第四个主要版本,它引入了许多新特性,如注解(Annotations)、参数化测试、测试套件的改进以及更加灵活的断言机制。这些改进使得测试代码更加简洁、易于理解和维护。 二、注解...

    junit4.jar.zip

    一、JUnit4概述 JUnit4是由Ernst Leimer和Kent Beck开发的开源测试框架,基于Java语言,主要用于编写可重复执行的单元测试。相较于早期版本,JUnit4引入了注解(Annotation)和测试套件(Test Suite)等新特性,使得...

    junit4教程

    #### 一、JUnit4概述与安装配置 JUnit是Java领域内最流行的单元测试框架之一,自其诞生以来,为软件开发人员提供了强大的测试能力,极大地促进了代码的质量提升和维护性。JUnit4作为JUnit的一个重要版本,引入了...

    开发者手册Junit4.zip

    一、Junit4概述 Junit4相较于之前的版本,引入了许多新特性,如注解(Annotations)、参数化测试、异常测试等,使得编写和组织测试用例更加简洁。手册首先会介绍Junit4的基本结构,包括测试类的创建、测试方法的定义...

    JUnit_jiaocheng

    #### 一、JUnit4概述与改进 JUnit4是JUnit测试框架的一个重大升级,它最大的特点是利用了Java 5中的注解(Annotation)特性简化了测试用例的编写过程。注解在Java中可以视为一种元数据,即用来描述其他数据的数据。...

    Junit4 basic concept

    ### JUnit4基础概念 #### 一、概述 在软件开发过程中,确保代码的质量与可靠性至关重要。单元测试作为软件质量保证的重要组成部分,在提高代码质量、减少bug方面扮演着不可或缺的角色。JUnit作为Java语言中...

    Junit5用户手册

    尽管JUnit5与JUnit4不完全兼容,但仍然可以使用JUnit4来运行JUnit5的测试。 **4.5 配置参数** 介绍了如何配置JUnit5的运行参数,以适应不同的测试需求。 #### 五、扩展模型 **5.1 概览** 扩展模型是JUnit5的一...

    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 测试整合之王...

    Junit5用户文档

    JUnit5相对于之前的版本(如JUnit4)进行了重大的改进与扩展,它分为三个主要模块:JUnit Platform、JUnit Jupiter和JUnit Vintage。 - **JUnit Platform**:用于执行测试的引擎,不仅支持JUnit5格式的测试,还能...

    junit4.8.2

    1. **JUnit 框架概述** JUnit 是一个基于Java语言的单元测试框架,由Ernst Leiss和Kent Beck共同创建,最初是JUnit 1版本。随着版本的迭代,JUnit逐渐成为Java开发者进行单元测试的事实标准。JUnit 4是其一个重大...

Global site tag (gtag.js) - Google Analytics