JUnit使用简介



      Unit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。

JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

接下来介绍eclipse下JUnit的使用。因为目前新版本的JDK和eclipse都会自带JUnit4的包和JUnit测试的功能,所以并不需要去安装,当然如果版本比较老,没有JUnit功能,则需要另外安装,可以参见http://blog.csdn.net/oathevil/article/details/7524760.

一、首先创建一个待测试的项目

待测项目calculate.java如下图所示:

该项目是一个简易的计算功能,实现了两个浮点数的加减乘除功能Te。

二、建立JUnit项目

按照以下图示的步骤创建JUnit Test Case:

勾选上红框里的setUpBeforeClass()、tearDownAfterClass()、setUp()和tearDown(),会自动生成annotation及相应的方法,如图为点击“finish”之后生成的TestCalculate.jave。

其中annotation,@BeforeClass、@AfterClass、@Before和@After的使用方法如下表所示,这四个annotation加上@Test是JUnit最常用的annotation:

@BeforeClass and @AfterClass @Before and @After
在一个类中只可以出现一次
在一个类中可以出现多次,即可以在多个方法的声明前加上这两个Annotaion标签,执行顺序不确定

方法名不做限制 方法名不做限制
在类中只运行一次 在每个测试方法之前或者之后都会运行一次

@BeforeClass父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。
@AfterClass 父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行

@Before父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。
 @After父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行
必须声明为public static 必须声明为public 并且非static
所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会。 所有标识为@After 的方法都一定会被执行,即使在标识为 @Before 或者 @Test 的方法抛出异常的的情况下也一样会。

JUnit中还有很多其他的annotation,关于这些annotation的说明和使用方法如下表:

JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:
 @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
 @After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
 @Test:测试方法,在这里可以测试期望异常和超时时间
 @Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
 @Ignore:忽略的测试方法
 @BeforeClass:针对所有测试,只执行一次,且必须为static void
 @AfterClass:针对所有测试,只执行一次,且必须为static void
 一个JUnit4的单元测试用例执行顺序为:
 @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
 每一个测试方法的调用顺序为:
 @Before -> @Test -> @After; 
摘自其他博客。(由于找不到网址了,以后看到再补)

三、JUnit的使用

JUnit为我们提供了一些辅助函数,他们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言。

常用的Assert(断言):1、assertEquals(a, b) Asserts that two primitive values are equal.

测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)

2、assertFalse(a) Asserts that a condition (a) is false.

测试a是否为false(假),a是一个Boolean数值。

3、assertTrue(a) Asserts that a condition is true.

测试a是否为true(真),a是一个Boolean数值

4、assertNotNull(a) Asserts that an object isn‘t null.

测试a是否非空,a是一个对象或者null。

5、assertNull(a) Asserts that an object is null.

测试a是否为null,a是一个对象或者null。

6、assertNotSame(a, b) Asserts that two objects do not refer to the same object.

测试a和b是否没有都引用同一个对象。

7、assertSame(a, b) Asserts that two objects refer to the same object.

测试a和b是否都引用同一个对象。

如下图是使用断言并且运行测试的截图:

如图,代码中红框就是使用了断言,检测两个数相加的结果与7比较(这里需要注意下,待测程序使用的两个浮点数,assertEquals(double,double)方法已过时,测试出现问题,故将程序改为了两个整数的加减乘除)。结果图片左边的框报告出测试未通过,到此为止测试结束。

测试程序中可以有多个@Test,在JUnit4.11后可以使用 @FixMethodOrder 注解改变每个测试的顺序。

目前当程序中有多个@before和@after注解还没有弄明白,如有大神了解,请指导。

有了JUnit,单元测试和回归测试变得好容易,所以经常使用JUnit对于中大型项目来说,有很大的益处

2015-05-25 22:34:18

---------------------------------------------------

人生并不像火车要通过每个站似的经过每一个生活阶段。

     人生总是直向前行走,从不留下什么。 

                                                    —— 刘易斯

时间: 2024-10-11 11:41:22

JUnit使用简介的相关文章

JUnit入门简介(转)

1.学习摘要 看<重构-改善既有代码的设计>这本书的时候,里面提到测试环境对于重构的重要性,想到之前在编写代码的时候都是通过System.out和 alert来做测试,非常麻烦,而且不够正规,对于即将步入工作的人来说,一个正规的写代码习惯和测试习惯是非常重要的,因此我觉得好好学学如何使用 JUnit. 在JUnit和单元测试入门简介一文中提到“JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test的对象:当调用TestSuite对象的run()方法是,会

Junit(3)JUnit和单元测试入门简介

1.几个相关的概念 白盒测试--把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的. 回归测试--软件或环境的修复或更正后的"再测试",自动测试工具对这类测试尤其有用. 单元测试--是最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设计和编码的细节. JUnit --是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.他是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. 2.

Junit&amp;Jmock使用简介

Junit&Jmock简介 序言 2 1. 环境配置 2 2.一种比较好的命名方式 3 3. JUnit使用入门 4 3.1一种简单的实现 4 3.2添加初始化和销毁方法的实现 5 3.3对Java异常(Exception)的单元测试 8 3.4 Assert类 9 3.5小结 12 4.Jmock使用入门 12 4.1一种简单的实现 13 4.2 Expectations类 18 4.3小结 21 5.总结 22 序言 本文的写作目的旨在帮助大家用最少的时间学会使用Junit和Jmock,并能

junit, hamcrest和eclemma安装

junit 安装简介: 1. 从http://www.junit.org/ 下载junit相应的jar包:   2. 在CLASSPATH中加入JAR包所在的路径,C:\Users\weidi\Deskto\junit-4.10.jar: 3. 将junit-4.10.jar加入到项目的lib文件夹中:  4. Window -> Preference -> java -> JUinit(或者Window -> Show View -> Java -> JUnit),检

Java Junit测试框架

Java    Junit测试框架 1.相关概念 ? JUnit:是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. ? 白盒测试:把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人 员是公开的. ? 回归测试:软件或环境的修复或更正后的再测试,自动测试工具对这类测试尤其有用. ? 单元测试:最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设

部署JUnit

JUnit的简介和使用:http://blog.csdn.net/luanlouis/article/details/37562165 jar包下载地址:http://www.java2s.com/Code/Jar/j/Downloadjunit4jar.htm     or   https://sourceforge.net/projects/junit/ 原文地址:https://www.cnblogs.com/jeryM/p/8260239.html

团队博客:软件单元测试概述

1.几个相关的概念 白盒测试——把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的. 回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用. 单元测试——是最小粒度的测试,以测试某个功能或代码块.一般由程序员来做,因为它需要知道内部程序设计和编码的细节. JUnit ——是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.他是用于单元测试框架体系xUnit的一个实例(用于java语言).主要用于白盒测试,回归测试. 2.单元测试概

年度盘点:谁是 2017 dW 的 Java “网红”?

2017 ,对于 Java 来说是不可思议的一年: Java 9 终于发布, 还有 Spring Framework 5.JUnit 5, 和 OpenLiberty .OpenJ9 等 来自 IBM 的著名开源项目, 以及 Java EE 将迁移到 EE4J 的好消息-- 事实上, 2017 对 developerWorks 来说, 也是激动人心的一年, 在这一年里,我们-- 在区块链等新兴领域进行了更深入的挖掘: 发布了将开源技术.文章资源.代码和社区集合在一起, 帮助您解决编程挑战的 Co

junit基础学习之-简介(1)

JUnit介绍 JUnit是一个开源的Java单元测试框架,由 Erich Gamma 和 Kent Beck 开发完成. 1  JUnit简介 JUnit主要用来帮助开发人员进行Java的单元测试,其设计非常小巧,但功能却非常强大. 下面是JUnit一些特性的总结: — 提供的API可以让开发人员写出测试结果明确的可重用单元测试用例. — 提供了多种方式来显示测试结果,而且可以扩展. — 提供了单元测试批量运行的功能,而且可以和Ant很容易地整合. — 对不同性质的被测对象,如Class,JS