-1

我看到一个奇怪的问题:我有大约 5 个用 java 编写的测试用例,并且我正在使用 maven 运行这些测试用例,但是如果类名不包含,我将无法运行任何测试用例(.java 文件)关键字“测试”。

因此,我可以执行任何包含“Test”的类名(例如 LoginTest),但不能执行任何没有“Test”的类名(例如 LoginModule)。

4

3 回答 3

2

这不是奇怪的行为。这是一个 Maven 约定。测试类通过使用单词“Test”开始或结束类名来标识。与任何 Maven 约定一样,您可以通过为运行测试的 surefire 插件提供配置来更改它。

于 2013-02-15T05:47:00.200 回答
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>
于 2013-02-15T06:28:20.147 回答
0

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

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

默认情况下,Surefire 插件会自动包含所有具有以下通配符模式的测试类:

"**/Test*.java"- 包括其所有子目录和所有以“Test”开头的 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

于 2013-02-15T05:48:25.223 回答