`
langgufu
  • 浏览: 2307076 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Junit4 简单教程(转载)

阅读更多

一、环境搭建

       对于习惯使用Eclipse开发平台来说,Junit早已是非常通常的插件,在Eclipse开发平台中,可以非常方便地搭建Junit测试环境。

       1、在Eclipse上创建工程,任何Java工程都行。

       2、引入Junit的libraries库,选用Junit4。如下图所示:

3、新建一个Java类,用于演示Junit4类的自动生成,java代码如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.hy;  
  2.   
  3. public class Demo {  
  4.   
  5.     public void method1() {  
  6.         System.out.println("method1");  
  7.     }  
  8.   
  9.     public void method2() {  
  10.         System.out.println("method2");  
  11.     }  
  12.   
  13.     public void method3() {  
  14.         System.out.println("method3");  
  15.     }  
  16.   
  17. }  

4、在该类上右键单击新建,选JUnit Test Case,自动生成一个对应的测试类,如下图所示:


4、这样就能自动地生成对应的测试类了,测试类代码发下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.hy;  
  2.   
  3. import static org.junit.Assert.*;  
  4.   
  5. import org.junit.After;  
  6. import org.junit.AfterClass;  
  7. import org.junit.Before;  
  8. import org.junit.BeforeClass;  
  9. import org.junit.Test;  
  10.   
  11. public class DemoTest {  
  12.   
  13.     @BeforeClass  
  14.     public static void setUpBeforeClass() throws Exception {  
  15.     }  
  16.   
  17.     @AfterClass  
  18.     public static void tearDownAfterClass() throws Exception {  
  19.     }  
  20.   
  21.     @Before  
  22.     public void setUp() throws Exception {  
  23.     }  
  24.   
  25.     @After  
  26.     public void tearDown() throws Exception {  
  27.     }  
  28.   
  29.     @Test  
  30.     public void testMethod1() {  
  31.         fail("Not yet implemented");  
  32.     }  
  33.   
  34.     @Test  
  35.     public void testMethod2() {  
  36.         fail("Not yet implemented");  
  37.     }  
  38.   
  39.     @Test  
  40.     public void testMethod3() {  
  41.         fail("Not yet implemented");  
  42.     }  
  43.   
  44. }  


5、如此一来,测试类环境的搭建过程就完成了,最后要做的就是,根据实际的业务需求,对测试类中的测试方法编写单元测试代码,直到运行调通。

 

二、基本规则

       从上面的演示可知,测试类名一般都以Test结尾,测试方法名以test开头。这个也是Junit的基本命名规则。

 

三、Junit注解

      我们此次针对的是Junit4版本,注解也是在Junit4版本才有的,之前的版本并无注解功能。而注解开发基本上被认为是一种优秀的设计,所以我们写单元测试用例时,尽可能地去了解并使用注解。

     @Test:使用该注解的方法为测试方法,自动运行时能够识别并被执行

      包含两个参数:expected=XXXException.class 期望出现的异常

                               timeout=xxx 设定程序运行的超时时间

     @Ignore:被忽略的测试方法

     @Before:在每个测试方法之前运行

     @After: 在每个测试方法之后运行

     @BeforeClass:在所有测试开始之前运行

     @AfterClass:在所有测试开始之后运行
  

      以上几个就是Junit 4的关键注解,熟练使用这几个注解,将来的测试用例编写肯定能事半功倍。

     注意:@Before与@BeforeClass的区别

     @Before会加在每个方法前执行,即有几个@Test就会执行几遍。

     @BeforeClass 只在所有测试之前执行,只会执行一次。并且@BeforeClass修饰的方法必须是公有的静态方法(public static )。

     @After和@AfterClass也类似

     每个测试类中这四个注解不能重复使用,一个方法只能从这四个注解中挑选其中一个。

 

四、基本写法

       1、setUp(),tearDown(),setUpBeforeClass(),tearDownAfterClass()这四个方法其实就是对应的@Before、@BeforeClass、@After、@AfterClass这四个注解,在Junit4开始使用注解时,其实可以替代这四个方法的功能,只是这四个方法是历史遗留方法,可以考虑使用,也可以直接使用注解替代。

       2、Assert是单元测试用例的核心,建议使用静态导入。

       3、待测试对象,一般建议设计成静态的。

       4、测试方法的要求:带@Test注解,方法名随意,返回值必须为void,不能带有参数,可以声明异常(可以参考演示代码)。

       5、Fixture方法的作用

            前面介绍的@Before、@BeforeClass、@After、@AfterClass注解修饰的方法,即为Fixture方法,它是在某些阶段必然被调用的方法,如注解功能所示。

            @Before、@After修饰方法的一个用处是对待测试对象的“复原”操作,如成员变量回归,数据库回滚等,目的是消除@Test方法之间的耦合。也可以用来打印日志。

            @BeforeClass修饰方法可以设计成用来加载一些耗时耗力的操作,如文件流的读取,数据库连接等,然后在@AfterClass中释放对应的资源即可。

      6、限时测试

           @Test(timeout=1000)超时时间单位为毫秒

           用于测试是否有死循环工是实时性要求比较高的用例,这个非常方便而且非常有用。

      7、测试异常

            @Test(expected=XXXException.class) XXXException为声明式异常

            用来验证声明式异常,注意此测试的含义:出现了期望的异常,叫做正常,若没出现异常,Junit会报错,认为不正常。这段描述有些拗口,请各位多琢磨琢磨。

      8、运行器Runner

            类注解@RunWith,指定不同的类可以改变测试类的行为

      9、参数化测试

            主要是针对一些相同功能却要进行多组参数测试的情况,开发步骤如下:

            1)参数化测试的类和普通测试类不同,要用特殊的Runner,类注解需要改为@RunWith(Parameterized.class)

            2)定义该测试类的成员变量,一个放测试参数,另一个放该参数产生的预期结果

            3)定义测试数据集合方法 public static Collection data() {...},注意该方法要用@Parameters修饰(数据格式为二维数组)

            4)定义带参数的构造函数,注意定义数据集合时,要和构造函数参数次序一致

            其他的与普通测试类似

            注意:若测试数据有两条,则该类下的所有@Test的方法都会执行两次,所以参数化测试的类不要和别的@Test放在一起。参数化测试方法一般建议单独建立类。

            演示代码如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //指定@RunWith  
  2. @RunWith(Parameterized.class)  
  3. public class ParamTest {  
  4.   
  5.     //定义成员变量,i为测试参数,j为测试结果  
  6.     private int i;  
  7.     private int j;  
  8.   
  9.     //构造函数  
  10.     public ParamTest(int i, int j) {  
  11.         super();  
  12.         this.i = i;  
  13.         this.j = j;  
  14.     }  
  15.   
  16.     //测试数据集合,注意使用的注解,数据结构及次序  
  17.     @Parameters  
  18.     public static Collection data() {  
  19.         return Arrays.asList(new Object[][]{{1,2},{3,4},{4,6}});  
  20.     }  
  21.     @Test  
  22.     public void testMethod1() {  
  23.         System.out.println(i);  
  24.         System.out.println(j);  
  25.         //简单测试,只测试参数加1会不会等于预期结果  
  26.         Assert.assertEquals(i+1, j);  
  27.     }  
  28. }  

       预期的执行结果是前两组参数测试正确,最后一组测试错误,运行后的结果为:

执行结果与预期结果相符合,OK

 

      10、打包测试

            将测试类集中起来运行,提高测试效率,代码如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. @RunWith(Suite.class)  
  2. @Suite.SuiteClasses({  
  3.     DemoTest.class  
  4. })  
  5. public class ModuleTest {  
  6.   
  7.     public ModuleTest() {  
  8.         // TODO Auto-generated constructor stub  
  9.     }  
  10.   
  11. }  

           1)@Suite.SuiteClasses里面的是需要打包测试的类

           2)该类中可以为空,类名建议为模块名+Test结尾,如ModuleTest.java

      以上是Junit4的最基本的使用,相信掌握了这些,对于编写常规的测试用例已经不是难事,同样,Junit还有更多更有意思的功能等待我们去挖掘……

分享到:
评论

相关推荐

    Junit4教程非常详尽

    JUnit4 教程详尽 JUnit4 是 JUnit 框架有史以来的最大改进,其主要目标便是利用 Java5 的 Annotation 特性简化测试用例的编写。下面是对 JUnit4 的详细介绍: 一、Annotation 简介 Annotation 是 Java5 中引入的...

    junit4教程(《Junit4初探》)

    **JUnit4教程——初探单元测试的艺术** JUnit4是Java编程语言中广泛使用的单元测试框架,它是Java开发者进行软件质量保证的重要工具。本教程将深入浅出地介绍JUnit4的基本概念、核心特性以及如何在实际项目中应用它...

    Junit4电子教程 api

    这个“Junit4电子教程 API”可能是针对如何有效地利用JUnit4 API进行测试编写的一份详细指南。在Java开发过程中,单元测试是确保代码质量、可维护性和可靠性的重要环节。JUnit4相比其前身JUnit3,引入了许多改进和新...

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

    本教程将深入讲解JUnit4的使用方法,并附带源码供学习者实践和参考。 一、JUnit4概述 JUnit4是JUnit系列的第四个主要版本,它引入了许多新特性,如注解(Annotations)、参数化测试、测试套件的改进以及更加灵活的...

    Junit4教程

    Junit4教程 Junit4是JUnit框架有史以来的最大改进,其中的主要目标便是利用Java5的Annotation特性简化测试用例的编写。在Junit4中,我们可以使用Annotation来描述测试用例,而不需要继承自TestCase类。下面我们将...

    在eclipse中使用junit4教程

    jUnit4 在 Eclipse 中的使用教程 jUnit4 是 JUnit 框架有史以来的最大改进,其主要目标便是利用 Java5 的 Annotation 特性简化测试用例的编写。 Annotation 是一种元数据,描述数据的数据。在 Java 里面可以用来和 ...

    JUnit4入门教程

    JUnit4入门教程

    JUnit与Ant教程

    JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程JUnit与Ant教程

    Junit4单元测试必备入门教程

    JUnit4单元测试必备入门教程 JUnit4概述 -------- JUnit4是JUnit框架有史以来最大的改进,其主要目标是利用Java5的Annotation特性简化测试用例的编写。Annotation是一种元数据,用于描述数据。在Java中可以用来和...

    Junit4简单实用

    在 JUnit 3 中,这些功能是通过 `setUp` 和 `tearDown` 方法实现的,但在 JUnit 4 中,它们被 `@Before` 和 `@After` 注解替代,使得代码更清晰,目的性更强。 @Test:这个元数据是 JUnit 4 的核心,它用于标记测试...

    Junit4教程.pdf

    Junit4是该框架的一个重大更新,它引入了许多新特性,显著地简化了测试代码的编写,使得测试更加直观和高效。本文将详细探讨JUnit4的主要改进和关键知识点。 1. **Annotation的引入**: - 在JUnit4中,核心的改变...

    junit4 jar完整包

    这个“junit4 jar完整包”包含了所有你需要进行单元测试的类和接口,使得测试过程变得简单且易于维护。下面我们将深入探讨JUnit4的核心概念、功能以及如何使用它。 首先,JUnit4是JUnit系列的一个重大升级,引入了...

    junit4测试jar包

    JUnit4测试框架是Java开发中广泛使用的单元测试工具,它为开发者提供了编写和运行可重复、可靠的测试用例的能力。这个“junit4测试jar包”包含了一切你需要在项目中集成JUnit4进行测试的库文件。只需将其复制到你的...

    junit4 jar包

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了编写可重复执行、易于维护的测试代码的能力。这个“junit4 jar包”包含了运行JUnit4测试所必需的库文件,主要包括两个核心组件:`junit-4.11....

    junit4学习文档

    ### JUnit4 学习知识点详解 #### 一、JUnit4 概述 JUnit4 是 JUnit 测试框架的一个重大更新版本,它充分利用了 Java 5 的注解(Annotation)特性来简化测试用例的编写过程。注解是一种元数据,用于描述程序中的...

    JUnit4JUnit4JUnit4(文档)

    JUnit4 的这些特性使得编写和维护测试变得更加简单和高效,同时也鼓励了TDD(测试驱动开发)和持续集成的实践。无论是在小型项目还是大型企业级应用中,JUnit4 都是Java开发者不可或缺的测试工具。通过深入理解和...

    用JUnit4测试教程

    JUnit4培训教程,讲述java中如何用junit测试

    junit4基础教程

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一...希望这四个文档——"Junit4教程.doc"、"JUNIT基本教程.ppt"、"JUnit4培训.ppt"、"JUnit4培训 (1).ppt"能为你提供全面且实用的指导,让你快速上手JUnit4的使用。

    JUnit4使用简单教程

    eclipse上通过一个简单例子演示使用JUnit4进行测试

Global site tag (gtag.js) - Google Analytics