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

简介:

本节书摘来自异步社区《JUnit实战(第2版)》一书中的第2章2.3节JUnit的测试运行器,作者【美】Petar Tahchiev , Felipe Leme , Vincent Massol , Gary Gregory,更多章节内容可以访问云栖社区“异步社区”公众号查看。

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的测试运行器


961b69216c0a0ac27a3a67e29a3c9a3921c6a3fd

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

3f33a2d39c391a9024ce69d9e00b4f3cb69c64f7

现在我们已经初步了解了不同的测试运行器以及如何指导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视图。


a6031bd5c980c044e7fa7d25d7f17d590a5c8201

当前,所有主要的IDE都支持与JUnit的集成。

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

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

相关文章
|
3月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
19天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
64 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
30天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
23 5
|
1月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
41 4
|
2月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
73 6
|
3月前
|
测试技术
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
单元测试问题之使用TestMe时利用JUnit 5的参数化测试特性如何解决
48 2
|
3月前
|
Cloud Native 数据处理
项目环境测试问题之当异步任务在运行过程中抛出非预期的异常会导致后果如何解决
项目环境测试问题之当异步任务在运行过程中抛出非预期的异常会导致后果如何解决
|
3月前
|
Linux C#
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
|
4月前
|
Java 测试技术 数据库
单元测试问题之LoginServiceImpl以避免对IpUtil的依赖问题如何解决
单元测试问题之LoginServiceImpl以避免对IpUtil的依赖问题如何解决
下一篇
无影云桌面