2013-02-15 18 views
-1

我看到一个奇怪的问题:我有大约5个用java编写的测试用例,而且我使用maven运行这些测试用例,但是我无法运行任何测试用例(.java文件)如果类名不包含关键字“测试”。因此,我可以执行任何包含“测试”(例如LoginTest)的类名称,但不能执行任何没有“测试”的类名称(例如LoginModule)。我无法运行任何不包含特定字符串的java文件

+3

你可以显示你不能运行的类的代码吗? – CloudyMarble 2013-02-15 05:47:18

回答

2

这不是奇怪的行为。这是一个Maven公约。测试类通过以“测试”一词开始或结束类名来标识。与任何Maven约定一样,您可以将其更改为supplying configuration for the surefire plugin,这是运行测试的原因。

0

可能是最简单的重命名你的测试类。

否则,使用surefire插件,您可以指定要包含哪些测试用例。默认情况下,它具有以下规则:

默认情况下,一定能成功的插件会自动包括所有测试类具有以下通配符模式:

"**/Test*.java" - 包括所有的子目录和启动所有的java文件名与“测试”。 "**/*Test.java" - 包含所有以“Test”结尾的子目录和所有java文件名。 "**/*TestCase.java" - 包含所有以“TestCase”结尾的子目录和所有java文件名。

可以包括特定的包,如果你想还有:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.13</version> 
    <configuration> 
     <includes> 
     <include>**/package/*.java</include> 
     </includes> 
    </configuration> 
    </plugin> 

http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

1

谢谢你们,如下更新pom.xml文件后,此问题已得到解决:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <includes> 
      <include>**/*Page.java</include> 
      <include>**/Page*.java</include> 
      <include>**/*Test.java</include> 
      <include>**/Test*.java</include> 
     </includes> 
     <redirectTestOutputToFile>true</redirectTestOutputToFile> 
     </configuration> 
</plugin> 
相关问题