java - Maven(surefire)测试插件排除不工作

标签 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没有结果。有任何想法吗?

最佳答案

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

不需要使用<excludes>标签。坚持 ma​​ven 命名约定 就足够了。只需将集成测试命名为 *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 测试肯定是一个集成测试,因此将其重命名为 DocumentChangeSubscriberIT.java 将立即解决您的所有问题。

顺便说一句。 this post就从集成测试中分离单元测试而言也可能有用。

希望对大家有帮助。

关于java - Maven(surefire)测试插件排除不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739969/

相关文章:

java - 为什么当通过 JNI 在 Java 代码中运行 EGL 函数时,我对 EGL 函数的调用会发生变化?

java - 大多数 "different"Apache 项目是如何或为何如此命名的

java - 在 C++ 中读取 float 相当于在 Java 中读取 float

maven-javadoc-plugin 覆盖中央存储库

java - 如何将jar发布到Nexus(快照存储库)?

java - 如何使用 postgresql initdb 创建一个临时数据库?

java - Eclipse-Oxygen 无法运行 Arquillian 单元测试

java - 具有多个文本和图像的 ListView

Java Maven 与 DB2?

java - 阿奎利安 : path relative to project instead of server