`

Junit入门 .

阅读更多

一、Junit简介

 JUnit是一个开源的java单元测试框架。在1997年,由 Erich Gamma 和 Kent Beck 开发完成。其中 Erich Gamma 是 GOF (四人帮啊...)之一;Kent Beck 则在 XP 中有重要的贡献。到目前为止,仍旧是Java 单元测试的最流行的工具之一。

 早期的Junit在编写,测试类  XxxTest时,必须要继承Test类,且测试方法中必须是以test前缀开头,要求是testXXX形式的方法名,但后期随着JDK1.5的注释出现,使得Junit变的更轻量级了,呵呵,再也不用继承TestCase类了,而且方法名上也变的更加灵活了。也没有强制必须以test开头了。 但个人建议开发人员在方法命名上,最好以test开头,这样就见名知意了。

 

二、测试用例讲解

 本遍中使用的Junit4.4,这个版本已经支持注解的方式编写TestCase测试用例了。 当然也要求JDK的环境必须是JDK5以上的了(JDK5以上支持注释,低版本不支持注释)。

使用注解进行单元测试时,先简单介绍核心的几个类:


org.junit.Test;org.junit.Test;   注解类,@Test加上方法名前面,代表这个方法就可以作为junit单独运行的一个测试方法了。
org.junit.After;  注解类  @After加上方法名前面,代表这个方法将在会@Test方法后被执行到。
org.junit.AfterClass; 注解类 @AfterClass加个方法名前面,代表这个方法将会在所有方法后执行,且只执行一次。
org.junit.Assert; 普通断言功能类,提供了一系列的静态的assertXXX方法,可以用来断言 执行的代码与期望值是否一致。
org.junit.Before; 注解类 @Before加上方法名前面,代表这个方法就@Test方法前被执行到。
org.junit.BeforeClass; 注解类 @BeforeClass加上方法名前面,代表这个方法将会在所有方法前执行,且只执行一次。

下面重点介绍下@Test注解、@Before注解、@After注解、@BeforeClass注解、@AfterClass注解;

  * BeforeClas 注释后的特点:
  * 1. 方法必须是静态的,因为此方法被执行的时机是此类被装载是就要求被执行,此后还没有对象。没有this。所以必须是static。
  * 2. 方法无返回值类型,必须是void的。
  * 3. 方法的执行时间时,被类被加载装载时就执行,优先于所有Before注释的方法,且只执行一次。因类只加装装载一次呢。

 


  * Before 注释后的特点:
  * 1. 方法必须不能有返回值,必须是void的。
  * 2. 方法将会在被运行的Test标识方法,之前就执行。 以便进行初始化,或装载一些资源之类的。

 

  * Test 注释后的特点:
  * 1. 方法必须不能有返回值,必须是void的。
  * 2. 方法可以单独进行运行执行,不需要用main方法来调用,可在Outline窗口中,
  *    点中方法后,右击Run As Junit Test进行运行执行。

 

  * Test 注释后的特点:
  * 1. 方法没有返回值,必须是void的。
  * 2. 方法将在被执行Test方法之后 ,再执行After注解的方法。以便进行一些必要的资源释放。

 

  * AfterClas 注释后的特点:
  * 1. 方法必须是静态的,因为此方法被执行的时机是对象消失,类的字节码对象clazz要被回收时,没有this。所以必须是static。
  * 2. 方法无返回值类型,必须是void的。
  * 3. 方法的执行时间时,滞后于所有After注释的方法,且只执行一次。因类的字节码对象clazz只有一份且只收回一次。

三、测试代码用例讲解

本例中,用到Junit4.,需要提前准备好相应的Junit4.jar包。而我的测试用的是eclipse3.2版本,自带Junit4.jar。所以可以输入@Test后,按Ctrl+1自动将包导入其中。若您是用txt工具写代码,而又没有jar包,可以通过以下网址下载:

官网免费下载地址: https://github.com/KentBeck/junit/downloads

 

示例代码如下:

/**
 * 小工具类一Demo,主要是给JunitDemo类进行测试滴。
 *
 */
public class Tools {
	
	/**
	 * 方法一,返回一布尔类型值 ,主要用于Assert.assertTrue或Assert.assertFalse断言来用的。
	 * @return
	 */
	public boolean isEmpty(){
		return false;
	}
	
	//如上类似
	public boolean contains(String str){
		return true;
	}
	
	//不加任意返回值 ,用于Junit中 @Test注释的方法,执行此方法是否正确,检查有无异常发生。
	public void showTools(){
		System.out.println("Tools show run");
	}
	
	/**
	 * 方法四:返回一数组,主要是给Junit的 Assert.assertArrayEquals的,是否返回的值与期望值是否一致。
	 * @return
	 */
	public int[] toIntArray(){
		return new int[]{1,4,7};
	}
}

 

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

/**
 * Junit测试一Demo,小程序。主要目的是,认识如何去简单的玩转Junit。
 * 各注释 Test、Before等等的含义特点。
 *
 */
public class JunitDemo {
	
	private Tools t ;
	
	
	/**
	 * BeforeClas 注释后的特点:
	 * 1. 方法必须是静态的,因为此方法被执行的时机是此类被装载是就要求被执行,此后还没有对象。没有this。所以必须是static。
	 * 2. 方法无返回值类型,必须是void的。
	 * 3. 方法的执行时间时,被类被加载装载时就执行,优先于所有Before注释的方法,且只执行一次。因类只加装装载一次呢。
	 */
	@BeforeClass
	public static void beforeClass(){
		// 类加载时,被执行,进行一些初始化资源
		System.out.println("++++++Junit before Class 1 Run++++++");
	}
	
	/*@Before  //可以有多个Before方法,且Before之间的执行顺序是,按靠近test方法的顺利来执行的,这里的2在1执行后再执行。
	public void beforeMethod2(){
		System.out.println("Junit Before Method 2 Run------");
		//t = new Tools();
	}*/
	
	/**
	 * Before 注释后的特点:
	 * 1. 方法必须不能有返回值,必须是void的。
	 * 2. 方法将会在被运行的Test标识方法,之前就执行。 以便进行初始化,或装载一些资源之类的。
	 */
	@Before
	public void beforeMethod1(){
		System.out.println("Junit Before Method 1 Run");
		t = new Tools();
	}
	
	/**
	 * Test 注释后的特点:
	 * 1. 方法必须不能有返回值,必须是void的。
	 * 2. 方法可以单独进行运行执行,不需要用main方法来调用,可在Outline窗口中,
	 *    点中方法后,右击Run As Junit Test进行运行执行。
	 */
	@Test
	public void testShowTools(){
		// Tools t = new Tools();  可以放在Before注销的方法上进行初始化t
		System.out.println(".......Junit testShowTools Run .........");
		t.showTools();
	}
	
	/**
	 * Assert.assertFalse方法与Assert.assertTrue方法,可以对返回布尔类型值的方法,进行测试。是否是返回false或返回true。
	 */
	@Test   //进行Junit的测试方法,要求被Test注销标识的方法,必须是void无返回类型的
	public void testIsEmpty(){
		System.out.println(".......Junit testIsEmpty Run .........");
		/*Assert.assertTrue(t.isEmpty());  */  //这里的assertTrue通不过,因为isEmpty返回的是false;
		Assert.assertFalse(t.isEmpty());  //这里将通过,isEmpty是false嘛,断言为false,肯定就通过了。
	} 
	
	/**
	 * Assert.assertArrayEquals方法,有多个重载都是对返回数组的方法,进行判断。判断方法最后一个参数(取实现方法执行返回值),与方法倒数第二个参数是否一致。
	 * Assert.assertArrayEquals方法第一个参数也可以不要,也就是也有两个参数的重载形式。要第一个参数String mess的目的是,可以在测试不通过打印自定义的信息而已。
	 */
	@Test
	public void testToIntArray(){
		System.out.println(".......Junit testToIntArray Run .........");
		Assert.assertArrayEquals("断言通过", new int[]{1,4,7}, t.toIntArray());
		/*Assert.assertArrayEquals("断言不通过", new int[]{4,7}, t.toIntArray());*/ //因两个数组值不一致。
		
	}
	
	/**
	 * Test 注释后的特点:
	 * 1. 方法没有返回值,必须是void的。
	 * 2. 方法将在被执行Test方法之后 ,再执行After注解的方法。以便进行一些必要的资源释放。
	 */
	@After
	public void afterMethod1(){
		System.out.println("Junit After Method 1 Run");
		t = null ;
	}
	
	/*@After   //可以加多个After的方法
	public void afterMethod2(){
		System.out.println("Junit After Method 2 Run ");
	}*/
	
	/**
	 * AfterClas 注释后的特点:
	 * 1. 方法必须是静态的,因为此方法被执行的时机是对象消失,类的字节码对象clazz要被回收时,没有this。所以必须是static。
	 * 2. 方法无返回值类型,必须是void的。
	 * 3. 方法的执行时间时,滞后于所有After注释的方法,且只执行一次。因类的字节码对象clazz只有一份且只收回一次。
	 */
	@AfterClass
	public static void afterClass(){
		// 完蛋时,回收资源
		System.out.println("++++++Junit after Class 1 Run++++++");
	}
	
}

 

测试运行操作方法,截图:

 

运行后,当test不通过时Junit中将来出红色的条条,如下:

而当测试通过时,将会是开心的绿色的条条了。

 

 

 

 

分享到:
评论

相关推荐

    junit4.8.2.zip(junit 整合包包括核心jar,文档,源代码,dep)

    总的来说,"junit4.8.2.zip"是一个完整的Junit学习和开发工具包,涵盖了从入门到深入研究的所有必要元素。无论你是Java初学者还是经验丰富的开发者,这个包都能提供你需要的一切,帮助你更好地进行单元测试和代码...

    dom4j_xpath_junitTest.zip

    《深入理解DOM4J、XPath与JUnit:快速入门与实战测试》 DOM4J、XPath和JUnit是Java开发中不可或缺的三个重要工具。DOM4J是处理XML文档的一个强大库,XPath则是XML路径语言,用于在XML文档中查找信息,而JUnit则是...

    JUnit4.zip下载

    5. `使用说明.txt`:这是一个文本文件,很可能包含了 JUnit 的基本使用教程或者一些注意事项,对于初学者来说是很好的入门资料。 6. `安卓游戏下载.url`, `单机游戏下载.url`, `更多软件点击进入.url`:这些看起来...

    JUnit入门及简单使用

    JUnit 是一个广泛使用的开源Java测试框架,由Erich Gamma和Kent Beck开发,主要用于进行回归测试,确保代码在修改后仍能按预期工作。JUnit测试主要是白盒测试,因为程序员对被测试的软件内部结构有深入理解,能够...

    JUnit.in.Action中文版.pdf

    描述中的内容“详细讲解如何用junit搭建测试框架,适合初学者和希望进一步了解单元测试的人”突出了文档的重点内容,即引导初学者入门JUnit框架的搭建,并帮助有经验的开发者更深入地理解单元测试。 文档的标签...

    浪曦][原创]Junit.3.8.详解续一.rar

    Junit 3.8是其早期的一个稳定版本,虽然现在已经有了更先进的Junit 5,但Junit 3.8仍然是许多开发者入门测试的首选。 1. **测试注解**:在Junit 3.8中,测试类和方法主要通过@Test注解来标识。虽然这个版本还没有...

    jUnit入门教程 jUnit教程

    【jUnit入门教程 - jUnit教程】 jUnit是一款广泛应用于Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行针对代码功能的测试用例。本教程旨在为初学者提供一个jUnit的基础入门指南,帮助理解如何利用...

    Manning.-.JUnit.in.Action.2nd.Edition.2010

    - **第1章:JUnit入门** 这一章节为读者提供了JUnit的基本概念和安装指南,同时介绍了如何创建简单的JUnit测试用例。此外,本章还探讨了JUnit的执行机制以及如何组织测试代码。 - **第2章:探索核心JUnit功能*...

    Junit入门练习代码

    本资源“Junit入门练习代码”旨在帮助初学者掌握JUnit的基本概念和使用方法,通过实践来加深理解。下面我们将深入探讨JUnit的相关知识点。 1. **JUnit简介**:JUnit是Java语言中的一个开源测试框架,由Ernst Leiss...

    JUnit入门[收集].pdf

    JUnit是一个专为Java开发者设计的开源单元测试框架,由Erich Gamma和Kent Beck于1997年创建,二人在软件开发领域具有深远影响力。JUnit以其小巧但功能强大的特性受到广泛欢迎,它提供了API用于编写可重用的、结果...

    junit 入门培训ppt

    本文将深入探讨JUnit入门培训的关键概念和技术。 首先,我们要理解什么是Test Driven Development(TDD),即测试驱动开发。TDD是一种软件开发方法论,它提倡在编写实际业务代码之前先编写测试。通过这种方式,...

    junit5学习入门

    ### JUnit5学习入门知识点详解 #### 一、JUnit简介 JUnit是一个开源的Java单元测试框架,被广泛应用于软件开发中的测试驱动开发(TDD)流程之中。它支持开发者通过编写测试代码来验证软件功能是否符合预期,从而提高...

    Junit培训讲义.ppt

    下面是一个简单的JUnit入门示例: 1. 被测试的`math`类,包含两个方法`add`和`subtract` ```java public class math { public math() {} public int add(int a, int b) { return a + b; } public int ...

    Junit入门实验Junit入门实验

    这个"Junit入门实验"旨在帮助初学者理解和掌握JUnit的基本概念和使用方法。通过这个实验,你将学习如何设置测试环境,创建测试类,编写测试用例,并理解断言和异常处理。 1. **安装与引入JUnit** 在开始之前,你...

    Junit入门培训资料(断言相关)

    ### Junit入门培训资料(断言相关):深入解析与应用 #### Junit概述与重要性 JUnit,作为由Kent Beck和Erich Gamma共同开发的开源Java测试框架,已成为Java开发人员进行单元测试的首选工具。它不仅是Java编程语言...

Global site tag (gtag.js) - Google Analytics