测试Java类的内部功能就是刚才你做的那些工作了。真正的测试和刚才的简单例子的主要区别是代码库的大小和复杂度。在处理一大堆代码时,你会需要收集情况报告。但上面的例子遇到第一个错误就停止了,它没有收集尽可能多的错误信息,也不能报告那些测试可以通过。如果一个测试不通过,就把整个测试重新编译、运行一遍,那开发过程肯定会非常慢。Bug经常是相互关联的,而且由各部分代码交互的地方引起。一次看到多个错误可以帮你分析和解决bug,对有关联的bug的处理也会加快。

在使用JUnit重写这个测试之前,你需要了解下述术语和测试概念:

1、单元测试(Unit test):单元测试是指一小段代码——绝大多数情况下都只有一个Java类——测试一个软件或者库非常有限的一个部分。单元测试检验的代码都很小,例如一个或几个类。通常是测试EJB组件和普通Java类库,不管这些类在服务器端(容器)环境中还是独立运行。与列表中提到的另一个概念功能测试比起来,单元测试的主要区别在于,单元测试的重点是最终用户一般看不到的内部组件,而功能测试的重点是"点击按钮"。在JUnit中,单元测试可能是TestCase类中的一个方法,也可能是整个TestCase类。从大小上讲一两页的代码对单元测试应该是合适的。如果单元测试达到十页就太夸张了,分成若干个粒度更细的测试会比较好。

2、功能测试(Functional test):功能测试就是站在最终用户的角度验证程序的功能是否正确。功能测试和黑盒测试是同一个意思。
 3、黑盒测试(Black box test):黑盒测试就是只根据对外发布的接口或公共约定,而忽略程序内部实现进行的测试。这通常意味着你只知道应该输入什么,只测试预期的输出,不知道程序如何生成这些输出,性能、边界影响等其它外部特征也不在你的考虑范围内,除非代码的这些方面特性是公共约定的一部分。如果你开发的软件库中有提供给其它开发者(你的最终用户)使用的API,黑盒测试就显得尤为重要。这个重要性不仅仅是指软件库能按公共接口说的做,软件库避免公共接口中禁止或省略的内容也很重要。如果你开发一个程序,遵守公共接口也是很重要的,因为它使你和同事之间能更有效的合作。
 4、白盒测试(White box test):白盒测试是在知道代码如何实现的情况下测试一段代码的功能。当你要测试公共约定中没有指定,但很重要的行为,例如性能问题时,白盒测试就派上用场了。在测试某些特别复杂的算法或业务逻辑时,也需要白盒测试。这种情况下,通过白盒测试你可以把注意力集中在可能出现错误的地方,这在黑盒测试中由于缺乏对内部情况的了解很难做到。
 5、容器内测试(In-container test):容器内测试在servlet或EJB容器内部进行,因此能更直接的和要测试的代码通信。Jakarta Cactus项目实现了一个免费的测试工具Cactus,它让你和要测试的代码在同一个容器内执行,不管这个容器是servlet容器还是EJB容器。容器内测试对黑盒功能测试没什么用,它的作用体现在单元测试上。
 6、测试用例(Test case):Test case在JUnit中就是一组相关的测试。Test case表现为继承junit.framework.TestCase的类。Test case通常有多个方法,每个方法测试程序一方面的行为。Test case中的测试方法习惯用test作前缀命名,但并不是必须这样做,只要不与其它方法产生冲突就可以。
 7、测试集(test suite):Test suite是一组test case或test suites。它表现为继承junit.framework.TestSuite的类。没有任何限制要求test suite只包括test case或只包括test suite,它可以既有test case,又有test suite。一个test suite的子test suite也可以包括test case和test suite,因此允许嵌套测试。只要你愿意,你可以建立几组test case,每一组测试程序的一个明确的小方面。一组可以形成一个test suite。然后你可以把它们综合到一个主test suite中,最后用这个主test suite测试整个程序,一个功能点一个功能点的测试。
 8、测试启动器(Test runner):Test runner是启动测试过程的JUnit类。你调用test runner,它依次执行你预订的测试。有几种办法可以定义要test runner执行的测试。这些办法在下面的第五部分"指定要运行的测试"中介绍。JUnit有三种不同的test runners:text、AWT和Swing,类名分别是junit.textui.TestRunner、junit.awtui.TestRunner和junit.swingui.TestRunner。

JUnit提供测试框架的优势(JUnit Provides Advantages as a Test Framework)的更多相关文章

  1. Junit 4测试框架使用

    断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否 ...

  2. Java高级特性 第11节 JUnit 3.x和JUnit 4.x测试框架

    一.软件测试 1.软件测试的概念及分类 软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别.它是帮助识别开发完成(中间或最终 ...

  3. 原创:Spring整合junit测试框架(简易教程 基于myeclipse,不需要麻烦的导包)

    我用的是myeclipse 10,之前一直想要用junit来测试含有spring注解或动态注入的类方法,可是由于在网上找的相关的jar文件进行测试,老是报这样那样的错误,今天无意中发现myeclips ...

  4. Selenium 4 Java的最佳测试框架

    几十年来,Java一直是开发应用程序服务器端的首选编程语言.尽管JUnit一直在与开发人员一起帮助他们进行自动化的单元测试,但随着时间的推移和测试行业的发展,特别是伴随着自动化测试的兴起,已经开发了许 ...

  5. hadoop 测试框架

    hadoop 0.21以前的版本中(这里拿0.20为例,其他版本可能有少许不同),所有的测试相关代码都是放置在${HADOOP_HOME}/src/test下,在该目录下,是按照不同的目录来区分针对不 ...

  6. 使用 Spring 2.5 TestContext 测试框架

    Spring 2.5 TestContext 测试框架用于测试基于 Spring 的程序,TestContext 测试框架和低版本 Spring 测试框架没有任何关系,是一个全新的基于注解的测试框架, ...

  7. 前端测试框架对比(js单元测试框架对比)

    前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试(Function ...

  8. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  9. Java Junit测试框架

    Java    Junit测试框架 1.相关概念 Ø JUnit:是一个开发源代码的Java测试框架,用于编写和运行可重复的测试.它是用于单元测试框架体系xUnit的一个实例(用于java语言).主要 ...

随机推荐

  1. IEEE VIS 2018专题

    PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) 本文带有视频,浏览视频请关注公众号浏览. IEEE VI ...

  2. CSS Align bottom

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  3. Angular入门教程二

    4 功能介绍 4.1数据绑定 AngularJS的双向数据绑定,意味着你可以在Mode(JS)中改变数据,而这些变动立刻就会自动出现在View上,反之亦然.即:一方面可以做到model变化驱动了DOM ...

  4. js如何获取response header信息

    信息转自网上 普通的请求JS无法获取,只有ajax请求才能获取到. $.ajax({ type: 'HEAD', // 获取头信息,type=HEAD即可 url : window.location. ...

  5. LDAP常用命令解析

    OpenLDAP常用命令讲解: ldapadd      -x   进行简单认证      -D   用来绑定服务器的DN      -h   目录服务的地址      -w   绑定DN的密码    ...

  6. [算法练习]Reverse Integer

    题目说明: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return –321   ...

  7. Oracle 计算两个日期间隔的天数、月数和年数

    在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...

  8. OFDM正交频分复用---基础入门图示

    @(162 - 信号处理) 整理转载自:给小白图示讲解OFDM 下面以图示为主讲解OFDM,以"易懂"为第一要义. 注:下面的讨论如果不做说明,均假设为理想信道. *** 一张原理 ...

  9. spring boot(8)-mybatis三种动态sql

    脚本sql XML配置方式的动态SQL我就不讲了,有兴趣可以自己了解,下面是用<script>的方式把它照搬过来,用注解来实现.适用于xml配置转换到注解配置 @Select(" ...

  10. CentOS随笔 - 3.CentOS7安装Oracle 11g xe

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 由于手上很多项目都是采用Oracle在进行开发, 所以安装Oracle成为必然. 当然有朋友会想为什么不安装1 ...