首页 » Maven实战 » Maven实战全文在线阅读

《Maven实战》10.2 maven-surefire-plugin简介

关灯直达底部

Maven本身并不是一个单元测试框架,Java世界中主流的单元测试框架为JUnit(http://www.junit.org/)和TestNG(http://testng.org/)。Maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或者TestNG的测试用例。这一插件就是maven-surefire-plugin,可以称之为测试运行器(Test Runner),它能很好地兼容JUnit 3、JUnit 4以及TestNG。

可以回顾一下7.2.3节介绍的default生命周期,其中的test阶段被定义为“使用单元测试框架运行测试”。我们知道,生命周期阶段需要绑定到某个插件的目标才能完成真正的工作,test阶段正是与maven-surefire-plugin的test目标相绑定了,这是一个内置的绑定,具体可参考7.4.1节。

在默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认为src/test/java/)下所有符合一组命名模式的测试类。这组模式为:

·**/Test*.java:任何子目录下所有命名以Test开头的Java类。

·**/*Test.java:任何子目录下所有命名以Test结尾的Java类。

·**/*TestCase.java:任何子目录下所有命名以TestCase结尾的Java类。

只要将测试类按上述模式命名,Maven就能自动运行它们,用户也就不再需要定义测试集合(TestSuite)来聚合测试用例(TestCase)。关于模式需要注意的是,以Tests结尾的测试类是不会得以自动执行的。

当然,如果有需要,可以自己定义要运行测试类的模式,这一点将在10.5节详细描述。此外,maven-surefire-plugin还支持更高级的TestNG测试集合xml文件,这一点将在10.7节详述。

当然,为了能够运行测试,Maven需要在项目中引入测试框架的依赖,本书已经多次涉及了如何添加JUnit测试范围依赖,这里不再赘述,而关于如何引入TestNG依赖,可参看10.7节。