【发布时间】:2015-05-05 20:32:56
【问题描述】:
TestNG 有一个名为 -configfailurepolicy 的选项,您可以在命令行中指定它,或者您可以在套件 XML 文件中指定它(如果您正在使用的话)。
我想在 POM 中通过 Maven 进行设置,但在任何地方都找不到解释如何执行此操作的文档。我可以吗?如果可以,我该怎么办?
【问题讨论】:
TestNG 有一个名为 -configfailurepolicy 的选项,您可以在命令行中指定它,或者您可以在套件 XML 文件中指定它(如果您正在使用的话)。
我想在 POM 中通过 Maven 进行设置,但在任何地方都找不到解释如何执行此操作的文档。我可以吗?如果可以,我该怎么办?
【问题讨论】:
configfailurepolicy IS 可通过 Failsafe 配置,并在询问时提供 Failsafe 和 TestNG 版本。
此配置适用于 TestNG 6.8.8 和 Failsafe 2.17。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<properties>
<property>
<name>configfailurepolicy</name>
<value>continue</value>
</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
Reporter 的输出结果是
2016-08-23 08:02:18.367 SampleTest Starting Test
2016-08-23 08:02:18.378 SampleTest sampleTest--Test Skipped
2016-08-22 20:02:18.632 SampleTest1 Starting Test
2016-08-22 20:02:18.633 SampleTest1 sampleTest1--Test Pass
2016-08-22 20:02:18.738 SampleTest2 Starting Test
2016-08-22 20:02:18.738 SampleTest2 sampleTest2--Test Pass
顺便说一句,据我所知,在没有通过插件 API 明确满足的情况下,通过 Failsafe 将配置导入 TestNG 没有记录在任何地方 - 我通过反复试验得到了这个。我怀疑此方法适用于其他未通过 Failsafes API 明确支持的command line arguments。
【讨论】:
有一张 2012 年的罚单:https://jira.codehaus.org/browse/SUREFIRE-927
据说,它是固定的。根据拉取请求和发布日期,它应该是任何版本中的可用选项,包括 2.13 或之后的版本。看起来现在的 maven 默认是 2.12.4,所以你必须手动将 surefire 插件配置为工作版本。
一旦你有了最新版本,你应该可以在命令行中传入-Dconfigfailurepolicy=continue,或者在xml中进行配置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</version>
<configuration>
<configfailurepolicy>continue</configfailurepolicy>
</configuration>
</plugin>
</plugins>
</build>
我遇到了同样的问题,这为我解决了问题。
【讨论】: