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

zbi*_*big 8 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>
      (...)
Run Code Online (Sandbox Code Playgroud)

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

我试过<includes><include>...,它工作正常 - 只包括测试运行.

我看到maven surefire测试插件运行测试,即使它们被排除在外:但这对我不起作用.我也试过很多maven-surefire-plugin没有结果的版本.有任何想法吗?

G. *_*cki 10

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

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

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

  1. Test*.java
  2. *Test.java
  3. *TestCase.java

另一方面,maven-failsafe-plugin它旨在运行您的集成测试,并将自动包含具有以下通配符模式的所有测试类:

  1. IT*.java
  2. *IT.java
  3. *ITCase.java

你的arquillian测试肯定是一个集成测试,所以将它重命名为DocumentChangeSubscriber IT .java将解决你所有的问题.

顺便说一句.这篇文章在集成测试的分离单元测试方面也很有用.

希望它对某人有帮助.


src*_*369 5

尽管问题已经解决,但如果有人遇到类似的排除问题,我将发布此内容。我遇到了类似的问题,其中我的排除不适用于 maven-failsafe-plugin。我使用排除来排除运行一些集成测试。

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

就我而言,

 <excludes>
   <exclude>**/something/*Test.java</exclude>
</excludes>
Run Code Online (Sandbox Code Playgroud)

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


但是,如果我不指定 -Dit.test,则可以正常工作。
IEmvn verify


zbi*_*big 4

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

对不起。