天天看点

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

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

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

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

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

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

当前,所有主要的ide都支持与junit的集成。

2.3.3 自定义测试运行器

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

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