《JUnit实战(第2版)》—第2章2.3节JUnit的测试运行器

2.3 JUnit的测试运行器
JUnit实战(第2版)
如果你刚开始编写测试,那么你会希望尽可能快捷地运行它们。这样你就能够将测试融合到开发循环中去:编码→运行→测试→编码(或者测试→编码→运行→测试,如果你偏爱测试先行的方式)。现在有很多IDE(集成开发环境)与编译器都可以快速构建并运行应用程序,其中JUnit就可以让你构建和运行测试。

2.3.1 测试运行器简介
JUnit 4可以向后兼容3.8.x版本。因为JUnit的4.x版本与3.x版本完全不同,所以JUnit 4很有可能不仅要运行JUnit 4的测试还要运行JUnit3.x版本的测试。这也就是为什么在JUnit的最新版本中提供了不同的运行器(如表2.3所示),分别用来运行JUnit 3.x、JUnit 4的测试以及其他不同的测试集。

表2.3 JUnit 4的测试运行器

如果测试类中没有提供任何运行器,那么JUnit将会使用一个默认的运行器。如果你希望JUnit使用某个特定的测试运行器,那么就使用@RunWith注释来指定测试运行器类,如以下代码所示:

现在我们已经初步了解了不同的测试运行器以及如何指导JUnit来使用它们,下面我们将更深入地探讨各种测试运行器。
2.3.2 JUnitCore façade
为了能够尽可能快捷地运行测试,JUnit提供了一个façade(org.junit.runner.JUnitCore),它可以运行任何测试运行器。JUnit设计这个façade来执行你的测试,并收集测试结果与统计信息。你可以在第1章的图1.3中看到实际应用中的JUnitCore类。

设计模式实践:façade

façade1是一种设计模式,它为子系统中的一组接口提供了一个统一的接口。façade定义了一个更高级别的接口,使得子系统更易于使用。你可以使用façade来将一些复杂的对象交互简化成一个单独的接口。

JUnit的façade决定使用哪个运行器来运行你的测试。它支持JUnit 3.8的测试、JUnit 4的测试以及两者的混合体。

在JUnit 4版本之前,JUnit包含了Swing与AWT测试运行器;但是到了JUnit 4就不再包含它们了。那些图形化界面的测试运行器都带有一个横跨屏幕的进度指示条,这就是著名的JUnit绿条。JUnit的用户都喜欢把通过测试叫做“绿条”,把测试失败叫做“红条”。因此,“保持绿条就是保持代码干净”是JUnit的座右铭。

图2.1显示了在Eclipse中一个绿条测试运行后的JUnit视图。

当前,所有主要的IDE都支持与JUnit的集成。
2.3.3 自定义测试运行器
不像JUnit框架中的其他元素,这里没有Runner接口。相反,JUnit自带的几个测试运行器都继承了org.junit.runner.Runner类。如果想创建你自己的测试运行器,你就需要扩展Runner类。关于这个话题的详细介绍,可以参考本书的附录B。

1这个定义摘自Portland Pattern Repository(http://c2.com/cgi/wiki?FacadePattern)。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-08-31 15:15:35

《JUnit实战(第2版)》—第2章2.3节JUnit的测试运行器的相关文章

《JUnit实战(第2版)》—第1章1.4节JUnit的设计目标

1.4 JUnit的设计目标JUnit实战(第2版)JUnit团队已经为框架定义了3个不相关的目标: 框架必须帮助我们编写有用的测试:框架必须帮助我们创建具有长久价值的测试:框架必须帮助我们通过复用代码来降低编写测试的成本.在第2章中,我们会再次谈论到这几个目标. 接下来,在我们进入实战之前,先来看看如何安装JUnit. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

《Nmap渗透测试指南》—第2章2.13节使用系统域名解析器

2.13 使用系统域名解析器表2.12所示为本章节所需Nmap命令表,表中加粗命令为本小节所需命令--使用系统域名解析器. --system-dns意为使用系统域名解析器.默认情况下,Nmap通过直接发送查询到您主机上配置的域名服务器来解析域名.为了提高性能,许多请求(一般几十个)并发执行.如果您希望使用系统自带的解析器,就指定该选项(通过getnameinfo()调用一次解析一个IP). root@Wing:~# nmap --system-dns 192.168.126.2 192.168.

《JUnit实战(第2版)》—— 2.3 JUnit的测试运行器

2.3 JUnit的测试运行器 JUnit实战(第2版)如果你刚开始编写测试,那么你会希望尽可能快捷地运行它们.这样你就能够将测试融合到开发循环中去:编码→运行→测试→编码(或者测试→编码→运行→测试,如果你偏爱测试先行的方式).现在有很多IDE(集成开发环境)与编译器都可以快速构建并运行应用程序,其中JUnit就可以让你构建和运行测试. 2.3.1 测试运行器简介 JUnit 4可以向后兼容3.8.x版本.因为JUnit的4.x版本与3.x版本完全不同,所以JUnit 4很有可能不仅要运行JU

《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版尚

《JUnit实战(第2版)》—— 第2章 探索JUnit的核心

第2章 探索JUnit的核心 JUnit实战(第2版)Mistakes are the portals of discovery. 错误是发现之门. -James Joyce 本章重点 使用核心JUnit类理解JUnit的机制理解JUnit的生命周期在第1章中,我们已经明确了我们需要一种可靠的.可复用的方法来测试我们的程序.我们的解决方案就是编写或复用一个框架来驱动测试代码,以测试程序的API.因为我们的程序对现有的类增加了新的类.新的方法,所以我们也需要增加相应的测试代码.经验告诉我们,有时候

《JUnit实战(第2版)》—第1章1.7节小结

1.7 小结JUnit实战(第2版)每位开发者都会执行某种类型的测试,来查看代码是否可以正常工作.使用自动单元测试的开发者能够根据需要重复执行这些测试,以确保新编写的代码可以正常工作并且不会破坏已有的测试. 没有JUnit,要创建简单的单元测试并非难事,但是随着测试变得越来越多.越来越复杂,编写和维持测试也就变得越来越困难.JUnit是一个单元测试框架,它使得创建.运行和修改单元测试更加简单.在这一章中,我们通过编写.运行一个简单的测试,对JUnit有了初步的认识.但是,JUnit提供的功能远不

《JUnit实战(第2版)》—第2章2.1节探索JUnit核心

第2章 探索JUnit的核心JUnit实战(第2版)Mistakes are the portals of discovery. 错误是发现之门. -James Joyce 本章重点 使用核心JUnit类理解JUnit的机制理解JUnit的生命周期在第1章中,我们已经明确了我们需要一种可靠的.可复用的方法来测试我们的程序.我们的解决方案就是编写或复用一个框架来驱动测试代码,以测试程序的API.因为我们的程序对现有的类增加了新的类.新的方法,所以我们也需要增加相应的测试代码.经验告诉我们,有时候类

《JUnit实战(第2版)》—— 第1章 Unit起步

第1章 Unit起步 JUnit实战(第2版)Never in the field of software development was so much owed by so many to so few lines of code. 在软件开发领域中,从来没有这样的事情:少数几行代码对大量代码起着如此重要的作用. --Martin Fowler 本章重点 探索JUnit安装JUnit编写第一个测试运行测试所有的代码都需要进行测试. 在开发期间,我们所做的第一件事是运行程序员自己的"验收测试&