`
oywl2008
  • 浏览: 1051397 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JUnit4概述 (非常好的文章for java unit 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:
使用了该元数据的方法在每个测试方法执行之前都要执行一次。

http://www.cnblogs.com/eggbucket/archive/2012/02/02/2335697.html

分享到:
评论

相关推荐

    安卓Unit Test

    综上所述,安卓Unit Test不仅包括了对移动应用开发的基础理解,还涵盖了如何搭建开发环境、创建简单应用以及使用JUnit进行单元测试等多个方面。通过这一系列的学习与实践,开发者可以更加熟练地掌握安卓应用的开发...

    Packt Publishing Mastering Unit Testing Using Mockito and JUnit (2014)

    - **JUnit 4 简介**:JUnit 4 是一个广泛使用的Java单元测试框架,提供了强大的测试功能,如注解、参数化测试等。 - **设置 Eclipse**:Eclipse 是一种流行的集成开发环境(IDE),支持多种编程语言,包括 Java。在 ...

    Using JUnit in Eclipse

    ### JUnit概述 JUnit是Java领域最流行的单元测试框架,由Erich Gamma和Kent Beck创建。这两位作者因设计模式和极限编程(Extreme Programming)而闻名于世。JUnit提供了丰富的API,支持编写、运行和报告测试结果,...

    hibernate4.2.4和junit4.0.rar

    在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作,而JUnit则是进行单元测试的重要工具。本教程将围绕Hibernate 4.2.4版本与JUnit 4.0,探讨这两者如何协同工作,帮助...

    面向对象大胆向前 Java API 实战-Markdown格式的笔记

    单元测试与主函数(1:Unit test and main function-Java API 实战.md) 单元测试是软件开发过程中的重要环节,它能确保代码的正确性。笔记中详细介绍了JUnit框架的使用,以及如何编写和执行单元测试。同时,主函数...

    台湾大学电机工程学系JAVA2

    #### 三、JUnit概述 ##### 3.1 JUnit简介 JUnit是一个开源的Java语言单元测试框架,最初由Erich Gamma和Kent Beck创建。它被广泛应用于Java项目中,帮助开发者编写和执行自动化测试。JUnit不仅仅是一个测试工具,它...

    Unit Testing EJB 3.0

    #### 概述 在软件开发过程中,单元测试作为确保代码质量的关键步骤之一,对于Java EE应用程序尤为重要。本文档将介绍如何使用JBoss进行EJB 3.0组件的单元测试,这对于提高Java EE应用的稳定性和可维护性具有重要意义...

    介绍单元测试

    ### 单元测试详解与JUnit应用 ...总之,单元测试是现代软件工程实践中不可或缺的一部分,JUnit作为Java领域内领先的单元测试框架,为开发者提供了强大且易用的测试工具,极大地促进了软件质量和开发效率的提升。

    Android测试,日志

    - **单元测试**(Unit Test):针对单一组件或模块进行测试,验证其独立功能是否正常。 - **功能测试**(Function Test):测试特定功能是否按预期工作,通常涉及多个组件之间的交互。 - **整合测试**(Integration ...

    JsUnit使用说明书(内含使用心得)

    JSUnit 是一个轻量级的测试框架,它模仿了Java的JUnit框架,为JavaScript开发者提供了自动化测试的能力。通过JSUnit,开发者可以编写测试用例,检查程序各个部分的功能是否正常工作,从而尽早发现并修复潜在的错误。...

    软件测试ppt

    Unit Test工具如JUnit(Java平台)和PyTest(Python平台)等,帮助开发者编写和执行自动化的单元测试用例,以验证代码功能的正确性。这些工具提供断言机制,用于判断程序运行结果是否符合预期,还能生成测试报告,...

    CDI-Demo:展示 CDI 功能和 CDI 单元测试的演示项目

    3. `src/test/java`:测试代码目录,使用cdi-unit编写对CDI bean的单元测试。 4. `README.md`:项目介绍和指南,可能包含如何构建和运行项目,以及如何理解示例的说明。 通过这个项目,你可以学习到如何在实际开发...

    PFM_G2_Project

    9. **Unit Testing and Integration Testing**:项目可能包含JUnit或TestNG测试用例,确保代码质量及功能正确性,同时,对于集成测试,可能会使用Mockito或Spring Boot的Test Slice特性。 10. **Docker**:考虑到...

    app-spotify-be:后端Spotify

    8. **Unit Testing & Integration Testing**: 使用JUnit和Mockito进行单元测试,确保代码质量;可能还有Spring Boot的Test Slice特性来进行集成测试。 **关键组件** 1. **Controller层**: 处理HTTP请求,将请求...

    filmsearch

    10. **Unit Testing & Instrumentation Testing**: 使用 JUnit、Mockito 进行单元测试, Espresso 进行 UI 测试,确保代码质量。 以上只是对可能涉及的部分技术栈的概述,实际的 "filmsearch" 项目可能根据其具体...

Global site tag (gtag.js) - Google Analytics