Maven:如何绕过Surefire&x27;s-Dtest覆盖包括和排除?
我在一个配置文件中有两个surefire执行-它们需要不同的配置。 当我运行-Dtest=…,匹配的测试运行两次-每次执行一次 如何使测试只运行一次? 或者更好,我如何确保Fire遵循包含和排除? (一次执行将运行0个测试;我将使用-DfailIfNoTest=false。)Maven:如何绕过Surefire&x27;s-Dtest覆盖包括和排除?,maven,include,execution,surefire,Maven,Include,Execution,Surefire,我在一个配置文件中有两个surefire执行-它们需要不同的配置。 当我运行-Dtest=…,匹配的测试运行两次-每次执行一次 如何使测试只运行一次? 或者更好,我如何确保Fire遵循包含和排除? (一次执行将运行0个测试;我将使用-DfailIfNoTest=false。) 聚类.集成.测试.配置文件 聚类、集成、测试 真的 org.apache.maven.plugins maven surefire插件 默认测试 测试 没有一个 tests-clustering-single-node.
聚类.集成.测试.配置文件
聚类、集成、测试
真的
org.apache.maven.plugins
maven surefire插件
默认测试
测试
没有一个
tests-clustering-single-node.surefire
测试
测试
org/jboss/as/test/clustering/single/***TestCase.java
tests-clustering-multi-node.surefire
测试
测试
org/jboss/as/test/clustering/cluster/***TestCase.java
maven surefire插件的2.12版解决了此问题。
(见附件)
描述添加到v2.12的更改:
引自约翰·凯西对上述JIRA链接的评论:
此外,如果存在多个测试执行块,为了避免在错误的块中运行指定的测试,现有的include/excludes现在被接受……指定的测试现在充当这些include/excludes上的细化过滤器。这意味着,在存在多个测试执行块的情况下,您无法运行通常不使用-Dtest=。。。再也没有了
在只有一个测试执行块的情况下,指定的测试应该像以前一样覆盖include
这听起来像是对的滥用,因为您似乎有一些应该由进行的集成测试。通过使用它们,可以自动为单元测试和集成测试提供不同的配置。maven surefire插件用于运行单元测试,而maven failsafe插件用于运行集成测试。此外,您的配置看起来需要不同类型的集成测试,换句话说,这意味着要有多个集成测试模块
+-- pom.xml
+-- module-1
+-- module-2
+-- integration-test-single-node
+-- integration-test-multi-node
...
这将是为集成测试运行提供不同配置的最佳选择。也许我可以引入另一个由属性“test”激活的配置文件,该配置文件将根据其ID禁用执行。或者,这仅在子模块中可能吗?SUREFIRE-806由我报告:)和2.12具有回归,请参阅。
+-- pom.xml
+-- module-1
+-- module-2
+-- integration-test-single-node
+-- integration-test-multi-node
...