10.5 包含与排除测试用例

10.2节介绍了一组命名模式,符合这一组模式的测试类将会自动执行。Maven提倡约定优于配置原则,因此用户应该尽量遵守这一组模式来为测试类命名。即便如此,maven-surefire-plugin还是允许用户通过额外的配置来自定义包含一些其他测试类,或者排除一些符合默认命名模式的测试类。

例如,由于历史原因,有些项目所有测试类名称都以Tests结尾,这样的名字不符合默认的3种模式,因此不会被自动运行,用户可以通过代码清单10-14所示的配置让Maven自动运行这些测试。

代码清单10-14 自动运行以Tests结尾的测试类


<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.5</version>

<configuration>

<includes>

<include>*/Tests.java</include>

</includes>

</configuration>

</plugin>


上述代码清单中使用了/*Tests.java来匹配所有以Tests结尾的Java类,两个星号用来匹配任意路径,一个星号*匹配除路径风格符外的0个或者多个字符。

类似地,也可以使用excludes元素排除一些符合默认命名模式的测试类,如代码清单10-15所示。

代码清单10-15 排除运行测试类


<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>2.5</version>

<configuration>

<excludes>

<exclude>*/ServiceTest.java</exclude>

<exclude>**/TempDaoTest.java</exclude>

</excludes>

</configuration>

</plugin>


上述代码清单排除了所有以ServiceTest结尾的测试类,以及一个名为TempDaoTest的测试类。它们都符合默认的命名模式*/Test.java,不过,有了excludes配置后,maven-surefire-plugin将不再自动运行它们。