[英]Maven (surefire) test plugin excludes not working
我在我的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测试插件运行测试,即使它们被排除在外:但这对我不起作用。 我还尝试了许多版本的maven-surefire-plugin
而没有结果。 有任何想法吗?
虽然您已经找到答案,但有一个更简单的解决方案。
无需使用<excludes>
标签。 坚持maven命名约定就足够了。 只需用*IT
后缀命名集成测试(例如: MyClassIT.java
),让maven-failsafe-plugin
完成它的工作。
请记住, maven-surefire-plugin
旨在运行您的单元测试 。 这意味着具有以下通配符模式的所有测试类:
Test*.java
*Test.java
*TestCase.java
另一方面, maven-failsafe-plugin
旨在运行集成测试 ,并将自动包含具有以下通配符模式的所有测试类:
IT*.java
*IT.java
*ITCase.java
would solve all your problems ouf of the box. 你的arquillian测试肯定是一个集成测试,所以将它重命名为将解决你所有的问题。
顺便说一句。 这篇文章在集成测试的分离单元测试方面也很有用。
希望它对某人有帮助。
好的,排除测试工作。 这就像拼错我的类名一样简单: DocumentChangeSubsriberTest.java
而不是DocumentChangeSubscriberTest.java
。
抱歉。
虽然这个问题已经解决了,但是如果有人出现类似的排除问题,我会发布这个问题。 我有一个类似的问题 - 在我的排除中不适用于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
我遇到了类似的问题,只是为了让人们看到另一件事:我的maven-surefire-plugin,如上所述,是在<reporting><plugins><plugin>....</plugin></plugins></reporting>
下意外声明的。 <reporting><plugins><plugin>....</plugin></plugins></reporting>
但当然需要在<build><plugins><plugin>...</plugin></plugins></build>
。 顶部的<reporting>
和<build>
规范在页面上方和下方都较高,因此需要验证是否有人收到同样的错误。
这个问题已经回答了这个问题(或者至少是一个非常类似的问题): 如何在maven安装目标中跳过测试,同时在maven测试目标中运行它们?
看一看,它可能会有所帮助! 简单的答案是,如果不使用自定义配置文件,您尝试执行此操作不是一种选择(但在该线程中可以更好地解释)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.