前言


上一篇文章《为什么要进行烦人的单元測试?》讨论了一下现阶段软件开发中,程序猿们測试情况的现状。这篇文章中,我打算介绍一下单元測试的工具(插件)。而且推荐大家以后在开发中,真正的用上单元測试,用好单元測试。


说明


这篇文章的主题,主要是介绍一下 JUnit 3。尽管 JUnit 3 已经不推荐使用了,但它也曾是风靡一时。这里旨在讨论一下 JUnit 3 的使用,以及它的内部构造,就当是为下一篇文章介绍 JUnit 4 做铺垫吧。

之前已经把单元測试的重要性都讲出来了,这里就不再赘述了,直接进入正题。



介绍


JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个回归測试框架(regression testing framework)。JUnit 測试是程序猿測试。即所谓白盒測试。它是一个 Java 语言的測试框架。多数 Java 的开发环境都已经集成了 JUnit 作为单元測试的工具。



特性

  • 用于測试期望结果的断言(Assertion)
  • 用于共享共同測试数据的測试工具
  • 用于方便的组织和执行測试的測试套件
  • 图形和文本的測试执行器

使用


下载



增加项目

  • 把压缩包中的 junit3.8.1.jar 文件,增加到项目的 classpath 中。


基本流程

  • 写測试类并继承 TestCase 类
  • 写測试方法 testXXX()
  • 写測试套件类。将 test case 增加到 test suite
  • 执行JUnit Test 进行測试

演示代码

<span style="font-family:Microsoft YaHei;">package com.tgb.test;

import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite; // 1. 继承 TestCase 类
public class CalculatorTest extends TestCase {
// 2. 測试方法必须以 test 开头
public void testAdd() {
int result = new Calculator().add(1, 2);
Assert.assertEquals(3, result);
} // 3. 将 testcase 增加 testsuite,能够同一时候測试多个用例
public static Test suite() {
return new TestSuite(CalculatorTest.class);
}
}</span>

剖析概念

  • TestCase(測试用例)
当一个类继承 JUnit 的 TestCase 类。即成为一个測试类,并且,測试类中的方法必须以 test 开头,比方:testAdd() 等。


  • TestSuite(測试套件)
TestSuite 是一组測试,目的在于将相关的測试用例归入一组。当运行一个 Test Suite 时,就会运行组内全部的測试方法。这就避免了繁琐的測试步骤。

当然。假设没有为 test case 写 test suite 的话,系统会默觉得每一个 test case 生成一个 test suite。


  • Assert(断言)
Assert 用于检查条件是否成立,当条件成立则 Assert 方法通过,否则会抛出异常。比如,Assert.assertEquals(3, result); 推断 result 是否跟期望的3想等,假设想等则通过。否则測试失败。


主要有例如以下几个断言方法:

assertTrue/False():推断一个条件是 true 还是 false。


fail():失败,能够有消息,也能够没有消息。


assertEquals():推断是否想等,能够指定输出错误信息。注意不同数据类型所使用的 assertEquals 方法參数有所不同。

assertNotNull/Null():推断一个对象是否为空。


assertSame/NotSame():推断两个对象是否指向同一个对象。


failNotSame/failNotEquals():当不指向同一个内存地址或者不相等的时候。输出错误信息。

错误信息为指定的格式。


  • setUp
每次測试方法运行之前,都会运行 setUp 方法。此方法用于进行一些固定的准备工作,比方,实例化对象。打开网络连接等。


  • tearDown
每次測试方法运行之后。都会运行 tearDown 方法,此方法用于进行一些固定的善后工作。比方。关闭网络连接等。


结束语


JUnit 3 就介绍到这。能够看出。JUnit 3 还是非常easy的,仅仅只是在每次编写測试类时,都须要继承 TestCase 类。这就无形之中给測试类添加了一些牵绊。

下一篇文章中,我们一起来讨论一下 JUnit 4 的一些新特性,以及是怎样简化測试用例的。


不要着急哦。下一篇立即就到。。。

谈谈单元測试之(二):測试工具 JUnit 3的更多相关文章

  1. Java单元測试工具JUnit 5新特性一览

    Java单元測试工具JUnit 5新特性一览 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JUnit是最流行的开源 ...

  2. PCI OP WiFi 測试(二):PCI对OP的要求

    PCI OP WiFi 測试(二):PCI对OP的要求 每次看PCI的文档.都一头雾水,本来就非常抽象.看英文就感觉更抽象.泛泛而谈的要求,看一次忘一次.仅仅好翻译成中文.没事就看看,知道指导思想. ...

  3. mongodb3.0 性能測试报告 二

    mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver   共6台 cpu:  单颗8核 ...

  4. 学习使用Jmeter做压力測试(一)--压力測试基本概念

    一.性能測试的概念         性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...

  5. 微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服

    微博达人硅谷之歌:Testin云測移动搜索性能測试非常是让人信服 2014/10/08 · Testin · 开发人员訪谈 2013年11月1日,谷歌运行董事长施密特(Eric Emerson Sch ...

  6. junit4同一时候測试多个測试类

    两个分别须要的測试类 TestSuit001 package com.test.junit; import org.junit.Test; public class TestSuit001 { @Te ...

  7. ESP32 LyraT音频开发板试玩(二):播放音乐

    我是卓波,很高兴你来看我的博客. 系列文章: ESP32 LyraT音频开发板试玩(一):搭建开发环境 ESP32 LyraT音频开发板试玩(二):播放音乐 本文延续上一篇博客 将D:\msys32\ ...

  8. [Testing][API][soapUI] 測試API 的軟體工具紀錄

    soapUI 測試API 的軟體工具紀錄 http://files.cnblogs.com/vincentmylee/soapUIScript%E9%9C%80%E8%A6%81%E8%B3%87%E ...

  9. 【Winform-自定义控件】DataGridView 单元格合并和二维表头

    DataGridView单元格合并和二维表头应用: //DataGridView绑定数据 DataTable dt = new DataTable(); dt.Columns.Add("); ...

随机推荐

  1. JavaSE高级1

    内部类 内部类概念: 所谓内部类(Inner Class),顾名思义,就是将一个类定义在另一个类的内部.内部的类称之为内部类. 内部类的主要特点: 内部类可以很好的实现隐藏,可以使用protected ...

  2. python 3---if判断成绩练习

    需求根据用户输入的成绩分档,要求如下: 1. 如果成绩大于60分,输出"及格"2. 如果成绩大于70分,输出"良"3. 如果成绩大于80分,输出"好& ...

  3. linux学习笔记二

    进程(process)是程序实体运行的过程,是系统进行资源分配和调度的独立单位,或者说是一个程序在处理机上的一次执行活动. 区分一下进程和程序 1.0 程序是一个静态指令的集合:而进程是一个程序的动态 ...

  4. iOS设置圆角的方法及指定圆角的位置

    在iOS开发中,我们经常会遇到设置圆角的问题, 以下是几种设置圆角的方法: 第一种方法: 通过设置layer的属性 代码: UIImageView *imageView = [[UIImageView ...

  5. [最短路]P1119 灾后重建

    题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...

  6. openFace 人脸识别框架测试

    openface  人脸识别框架  但个人感觉精度还是很一般 openface的githup文档地址:http://cmusatyalab.github.io/openface/ openface的安 ...

  7. RecyclerView分割线——万能分割线

    参照网络上众多的分割线设计方法,对方法进行调整和修改,最终完成的比较通用的RecyclerView分割线,底部会附上参考网址,大家可以去看一下. 在正文之前,先说一下个人看法:研究下来,我发现,其实最 ...

  8. 如何使用MFC连接Access数据库

    (1)新建一个Access数据库文件.将其命名为data.mdb,并创建好表.字段. (2)为系统添加数据源.打开“控制面板”—>“管理工具”—>“数据源”,选择“系统DSN”,点击右边的 ...

  9. 2017计算机学科夏令营上机考试-B编码字符串

    B:编码字符串 总时间限制:  1000ms 内存限制:  65536kB 描述 在数据压缩中,一个常用的方法是行程长度编码压缩.对于一个待压缩的字符串,我们可以依次记录每个字符及重复的次数.例如,待 ...

  10. 理论篇:关注点分离(Separation of concerns, SoC)

    概念 关注点分离(Separation of concerns,SOC)是对只与"特定概念.目标"(关注点)相关联的软件组成部分进行"标识.封装和操纵"的能力, ...