本节书摘来自异步社区《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将会使用一个默认的运行器。如果你希望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)。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。