Maven(surefire)测试插件排除不起作用

时间:2014-09-09 08:31:40

标签: java maven jboss-arquillian

我的pom.xml中有以下配置

<build>
  <plugins>
      <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.17</version>
          <configuration>
              <excludes>
                  <exclude>**/DocumentChangeSubscriberTest.java</exclude>
              </excludes>
          </configuration>
      </plugin>
      (...)

DocumentChangeSubscriberTest是一个arquillian测试,我只想在指定的配置文件中运行。 当我输入mvn install时,所有测试都会运行,甚至是我要排除的DocumentChangeSubscriberTest。 如何从默认(匿名)配置文件中排除测试?

我尝试了<includes><include>...并且运行正常 - 只运行了测试。

我看到了maven surefire test plugin runs tests even if they are excluded:,但这不适合我。我还尝试了许多版本的maven-surefire-plugin而没有结果。有任何想法吗?

5 个答案:

答案 0 :(得分:9)

虽然您已找到答案,但有一个更简单的解决方案。

无需使用<excludes>标记。坚持 maven命名约定就足够了。只需使用*IT后缀命名集成测试(例如:MyClassIT.java),然后让maven-failsafe-plugin完成其工作。

请注意,maven-surefire-plugin旨在运行单元测试。这意味着具有以下通配符模式的所有测试类:

  1. Test*.java
  2. *Test.java
  3. *TestCase.java
  4. 另一方面,maven-failsafe-plugin旨在运行集成测试,并会自动包含具有以下通配符模式的所有测试类:

    1. IT*.java
    2. *IT.java
    3. *ITCase.java
    4. 您的arquillian测试肯定是一个集成测试,因此将其重命名为 DocumentChangeSubscriber IT .java 将解决您的所有问题。

      顺便说一句。 this post在集成测试的分离单元测试方面也可能有用。

      希望它对某人有帮助。

答案 1 :(得分:2)

虽然这个问题已经解决了,但是如果有人出现类似的排除问题,我会发布这个问题。 我有一个类似的问题 - 在我的排除中不适用于maven-failsafe-plugin。我正在使用排除来排除运行某些集成测试。

我使用mvn verify来运行集成测试。

在我的情况下,

 <excludes>
   <exclude>**/something/*Test.java</exclude>
</excludes>

如果我使用-Dit.test选项,则无效
mvn verify -Dit.test="<some_package>"

但是如果我没有指定-Dit.test,那么DOES是否正常工作。
mvn verify

答案 2 :(得分:1)

此问题已在此主题(或至少非常类似的主题)中回答:How can I skip tests in maven install goal, while running them in maven test goal?

看看,它可能会有所帮助!简单的答案是,如果不使用自定义配置文件,您尝试这样做的选项不是一个选项(但在该主题中可以更好地解释)。

答案 3 :(得分:1)

好的,排除测试工作。这就像拼写我的班级名称一样简单:DocumentChangeSubsriberTest.java而不是DocumentChangeSubscriberTest.java

对不起。

答案 4 :(得分:1)

我遇到了类似的问题,只是为了让人们看到另一件事:我的maven-surefire-plugin,如上所述,在<reporting><plugins><plugin>....</plugin></plugins></reporting>下被意外声明,但当然需要在{ {1}}。最高<build><plugins><plugin>...</plugin></plugins></build><reporting>规格在页面上方较高,因此可以验证是否有人遇到同样的错误。