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

相关文章
|
1月前
|
IDE Java 测试技术
Junit 单元测试
JUnit是Java常用的单元测试框架,简化了测试用例的编写和执行。其特点包括简单注解、自动化测试、可扩展性、灵活性及与IDE的集成。使用方法涉及创建测试类、利用注解如@Test、@BeforeEach等管理测试生命周期,以及使用各种断言方法验证结果。此外,JUnit支持参数化测试以覆盖更多输入组合,并能与Maven、Gradle等构建工具集成,提升测试效率和项目管理。
36 1
|
3月前
|
测试技术
软件测试/测试开发/全日制|Pytest如何灵活地运行用例
软件测试/测试开发/全日制|Pytest如何灵活地运行用例
33 0
|
3月前
|
Java 测试技术
JUnit 4 单元测试
单元测试是软件开发中必不可少的一环,但是在平常开发中往往因为项目周期紧,工作量大而被选择忽略,这样往往导致软件问题层出不穷。 线上出现的不少问题其实在有单元测试的情况下就可以及时发现和处理,因此培养自己在日常开发中写单元测试的能力是很有必要的。无论是对自己的编码能力的提高,还是项目质量的提升,都是大有好处,本文将介绍 Java 单元测试框架 JUnit 4 的基础认识和使用来编写单元测试,希望同样对你有所帮助。
|
4月前
|
Ubuntu Linux 定位技术
Trinitycore学习之在Linux环境上搭建服务器并测试运行
Trinitycore学习之在Linux环境上搭建服务器并测试运行
65 0
|
4月前
|
存储 C语言 Windows
音视频使用qt测试ffmpeg接口时无法运行
音视频使用qt测试ffmpeg接口时无法运行
45 0
|
4月前
|
应用服务中间件 测试技术 nginx
dpdk环境搭建及运行helloworld测试
dpdk环境搭建及运行helloworld测试
77 0
|
3月前
|
监控 数据可视化 Java
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
51 1
|
4月前
|
测试技术
Junit单元测试 org.junit.jupiter.api.extension.ParameterResolutionException异常处理
Junit单元测试 org.junit.jupiter.api.extension.ParameterResolutionException异常处理
84 0
|
10天前
|
Java 测试技术 程序员
junit单元测试
junit单元测试
|
3月前
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
197 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)