我的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
而没有结果。有任何想法吗?
答案 0 :(得分:9)
虽然您已找到答案,但有一个更简单的解决方案。
无需使用<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
您的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>
规格在页面上方较高,因此可以验证是否有人遇到同样的错误。