《JUnit实战(第2版)》—第1章1.3节理解单元测试框架

1.3 理解单元测试框架
JUnit实战(第2版)
单元测试框架应该遵循以下几条最佳实践规则。CalculatorTest程序中一些不起眼的改进就突出体现了所有单元测试框架应该遵循(按照我们的经验)的三大规则:

每个单元测试都必须独立于其他所有单元测试而运行;
框架应该以单个测试为单位来检测和报告错误;
应该易于定义要运行哪些单元测试。
“稍好一点”的CalculatorTest程序虽然向以上规则靠拢了,但仍然存在着不足。例如,为了使每个单元测试能够真正独立运行,就应该在不同的类实例中运行它们,理想的情况是在不同的类加载器(class loader)实例中运行它们。

我们现在能够通过增加一个新的方法并且在main中增加一个对应的try/catch块来增加新的单元测试。显然,这是一个进步,但是在真正的单元测试集中,这样做还远远不够。经验告诉我们,很大的try/catch块会带来诸多维护问题。我们很可能遗漏一个单元测试并且还对此毫无意识!

如果我们可以增加新的测试方法并继续正常工作,那真是太好了。但是,程序又是如何知道要运行哪些方法呢?好吧,我们应该有一个简单的注册过程。一个注册方法至少可以盘点哪些测试正在运行。

另一种方法是使用Java的reflection和introspection功能。程序可以检查自身并决定要运行任何遵循某种命名协定的方法,例如,以“test”开头的方法。

对于单元测试框架而言,使增加测试变得更加简单(上文中提到的第3条规则)听起来像是另一条不错的规则。为了满足这条规则(通过注册或自我检测),还需要编写大量的支持代码,但这将是值得的。虽然起初的工作量会很大,但是随着每次我们增加一个新的测试,所有的努力都会得到回报。

令人高兴的是,JUnit团队为我们解决了这个麻烦。JUnit框架已经支持自我检测方法。它也支持针对每个测试使用不同的类实例和类加载器实例,并逐个报告每个测试的所有错误。既然你已经明白了你为什么要需要一个单元测试框架,那么就让我们进一步来了解JUnit。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-25 03:02:12

《JUnit实战(第2版)》—第1章1.3节理解单元测试框架的相关文章

《JUnit实战(第2版)》—— 1.3 理解单元测试框架

1.3 理解单元测试框架 JUnit实战(第2版)单元测试框架应该遵循以下几条最佳实践规则.CalculatorTest程序中一些不起眼的改进就突出体现了所有单元测试框架应该遵循(按照我们的经验)的三大规则: 每个单元测试都必须独立于其他所有单元测试而运行:框架应该以单个测试为单位来检测和报告错误:应该易于定义要运行哪些单元测试."稍好一点"的CalculatorTest程序虽然向以上规则靠拢了,但仍然存在着不足.例如,为了使每个单元测试能够真正独立运行,就应该在不同的类实例中运行它们

《Metasploit渗透测试手册》—第1章1.8节在Metasploit框架中建立数据库

1.8 在Metasploit框架中建立数据库 Metasploit渗透测试手册 Metasploit的重要特点是包括用于存储渗透测试结果的数据库.渗透测试涉及大量信息,并且持续数天,因此存储中间结果是必要的.因此,好的渗透测试工具应该正确地整合数据库,以便快速高效地存储结果. 准备 默认情况下,Metasploit将自带的PostgreSQL作为基础数据库.在BackTrack上,还有另外一种选择,也就是MySQL数据库.用户可以使用这两种数据库中的任一种.我们先来看一下PostgreSQL数

《SOA达人迷》—第1章1.7节理解SOA的不同之处

1.7 理解SOA的不同之处SOA达人迷也许您对SOA还存在着质疑,因为您觉得软件行业是一个很有前途的产业,也许会出现其他的新技术帮助用户解决业务问题.我们在这里需要再次重申一下,SOA并不是一种"除旧迎新"的技术,而是一种重用技术:它不仅允许用户继续使用现有的业务服务,而且可以使用户更放心地使用,当业务发生改变时,SOA可以帮助用户更加简单直接.安全快速地实现业务服务的变更.SOA的推广和使用是一个长期的过程,并不能一蹴而就.但是,企业可以从现在开始使用SOA,并享受SOA带来的便利

《Metasploit渗透测试手册》—第3章3.8节 理解Windows DLL注入漏洞

3.8 理解Windows DLL注入漏洞Metasploit渗透测试手册本节将介绍一种特殊类型的漏洞,这种漏洞不直接存在于Windows操作系统中,而是存在于Windows上运行的各种应用程序软件之中.这种远程攻击方法针对的是应用程序加载外部库时存在的漏洞,下面介绍这类漏洞,以便对其进行深入分析. 准备这种攻击方法需要创建包含漏洞的目录路径,目标机器需要执行该路径以便激活该漏洞.这个目录可以是文件.提取的文件夹.USB驱动器或网络共享等.创建的文件本身是完全无害的,但会执行DLL注入漏洞来攻击

《LoadRunner 12七天速成宝典》—第2章2.3节理解代码

2.3 理解代码云云:接着要给你讲一下怎样理解代码录制出来的原理.LoadRunner是一个基于协议的工具,它能够使脚本录制成功的关键在于它能识别协议,当它捕获到该协议后,会尝试对其进行解析,转化为自己的C语言脚本. 恋恋:岂不是我还要学习C语言? 云云:从某些角度来说确实需要,不过现在是速成么,我尽量跳过这些麻烦的东西帮你做最常见的一些棘手的问题. 恋恋:嗯,我赞成. 云云:对于LoadRunner来说录制设置很重要,首先我来给你介绍一下怎么设置录制选项. 恋恋:来吧,时刻准备着! 云云:对于

《JUnit实战(第2版)》—— 导读

前言 JUnit实战(第2版)作为一个屡获殊荣的数学家,我无法容忍平庸.这就是数学所教给我的─不要停止,直到你把它完成,并且不仅要用好的方法,而且要用最好的方法. 当我开始编写软件时,我发现这条原则同样适用.我认识一些同事,他们对自己的工作非常马虎随便,并且我也看到了他们因为自己的疏忽大意而深受其害.他们不耐烦地完成他们的任务,从不担心他们开发的软件质量,更不用说寻找可能的最佳解决方案.对于那些家伙,重用相同的代码就意味着,在任何他们需要相同代码的地方简单地复制和粘贴它即可.我看到了不耐烦地尽快

《JUnit实战(第2版)》目录—导读

版权声明JUnit实战(第2版)Original English language edition, entitled JUnit in Action (Second Edition) by Petar Tahchiev, Felipe Leme, Vincent Massol, Gary Gregory, published by Manning Publications Co., 209 Bruce Park Avenue, Greenwich, CT 06830. Copyright 20

《Android 开发入门与实战(第二版)》——6.10节本章小结

6.10 本章小结Android 开发入门与实战(第二版)本章主要对Android中最重要的组件之一Activity进行了基本的讲解.在本章的最开始就已经说明了Activity对整个应用程序的重要性,所以学好Activity可以说是开发Android应用程序必备基础技能之一,尤其是对Activity的生命周期以及基本状态的了解,掌握了这些,在开发应用时,你就能游刃有余地把握每个Activity不同时期的不同状态,从而做出最合理的操作.最后又补充了一个Activity的小实例,希望大家能跟着本书动

《JUnit实战(第2版)》—第1章1.1节证实它能运行

第1部分 认识JUnit JUnit实战(第2版) 欢迎阅读<JUnit实战(第2版)>!JUnit是一个由Kent Beck和Erich Gamma于1995年年底着手编写的框架.自此以后,JUnit框架日益普及,现在已经成为单元测试Java应用程序的事实上的标准. 本书是第2版.<JUnit实战>的第1版非常畅销,由Vincent Massol和Ted Husted于2003年编写,其内容是基于JUnit 3.x版本的. 我们涵盖了JUnit最新的版本4.6,讨论了许多第1版尚