一、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学习和开发工具包,涵盖了从入门到深入研究的所有必要元素。无论你是Java初学者还是经验丰富的开发者,这个包都能提供你需要的一切,帮助你更好地进行单元测试和代码...
《深入理解DOM4J、XPath与JUnit:快速入门与实战测试》 DOM4J、XPath和JUnit是Java开发中不可或缺的三个重要工具。DOM4J是处理XML文档的一个强大库,XPath则是XML路径语言,用于在XML文档中查找信息,而JUnit则是...
5. `使用说明.txt`:这是一个文本文件,很可能包含了 JUnit 的基本使用教程或者一些注意事项,对于初学者来说是很好的入门资料。 6. `安卓游戏下载.url`, `单机游戏下载.url`, `更多软件点击进入.url`:这些看起来...
JUnit 是一个广泛使用的开源Java测试框架,由Erich Gamma和Kent Beck开发,主要用于进行回归测试,确保代码在修改后仍能按预期工作。JUnit测试主要是白盒测试,因为程序员对被测试的软件内部结构有深入理解,能够...
描述中的内容“详细讲解如何用junit搭建测试框架,适合初学者和希望进一步了解单元测试的人”突出了文档的重点内容,即引导初学者入门JUnit框架的搭建,并帮助有经验的开发者更深入地理解单元测试。 文档的标签...
Junit 3.8是其早期的一个稳定版本,虽然现在已经有了更先进的Junit 5,但Junit 3.8仍然是许多开发者入门测试的首选。 1. **测试注解**:在Junit 3.8中,测试类和方法主要通过@Test注解来标识。虽然这个版本还没有...
【jUnit入门教程 - jUnit教程】 jUnit是一款广泛应用于Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行针对代码功能的测试用例。本教程旨在为初学者提供一个jUnit的基础入门指南,帮助理解如何利用...
- **第1章:JUnit入门** 这一章节为读者提供了JUnit的基本概念和安装指南,同时介绍了如何创建简单的JUnit测试用例。此外,本章还探讨了JUnit的执行机制以及如何组织测试代码。 - **第2章:探索核心JUnit功能*...
本资源“Junit入门练习代码”旨在帮助初学者掌握JUnit的基本概念和使用方法,通过实践来加深理解。下面我们将深入探讨JUnit的相关知识点。 1. **JUnit简介**:JUnit是Java语言中的一个开源测试框架,由Ernst Leiss...
JUnit是一个专为Java开发者设计的开源单元测试框架,由Erich Gamma和Kent Beck于1997年创建,二人在软件开发领域具有深远影响力。JUnit以其小巧但功能强大的特性受到广泛欢迎,它提供了API用于编写可重用的、结果...
本文将深入探讨JUnit入门培训的关键概念和技术。 首先,我们要理解什么是Test Driven Development(TDD),即测试驱动开发。TDD是一种软件开发方法论,它提倡在编写实际业务代码之前先编写测试。通过这种方式,...
### JUnit5学习入门知识点详解 #### 一、JUnit简介 JUnit是一个开源的Java单元测试框架,被广泛应用于软件开发中的测试驱动开发(TDD)流程之中。它支持开发者通过编写测试代码来验证软件功能是否符合预期,从而提高...
下面是一个简单的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的基本概念和使用方法。通过这个实验,你将学习如何设置测试环境,创建测试类,编写测试用例,并理解断言和异常处理。 1. **安装与引入JUnit** 在开始之前,你...
### Junit入门培训资料(断言相关):深入解析与应用 #### Junit概述与重要性 JUnit,作为由Kent Beck和Erich Gamma共同开发的开源Java测试框架,已成为Java开发人员进行单元测试的首选工具。它不仅是Java编程语言...