java - Maven Surefire 仅在命令行上确认 "forkMode"

标签 java maven junit surefire

我们的 POM 定义了 maven-surefire-plugin如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.14</version>
    <configuration>
        <reuseForks>false</reuseForks>
        <forkCount>1</forkCount>
        <argLine>-Xms64m -Xmx256m</argLine>
        <includes>
            <include>**/*Test.java</include>
        </includes>
    </configuration>
</plugin>

但是,我们的 Java 测试(涉及一些并行测试和静态单例)仅当我们使用以下命令运行测试阶段/构建时才能正常运行:

mvn test -DforkMode=always

奇怪的是,即使我们改变了 <configuration>使用(而不是较新的选项):

<forkMode>always</forkMode>

然后运行:

mvn test

它会失败。但是如果我们运行:

mvn test -DforkMode=always

一切都会过去的。仅当我们明确提供 forkMode 时,它仍然才会起作用,而不是较新的选项。在命令行上。我们已经用多个版本的 Surefire 插件进行了尝试,达到了相同的效果。

是否存在可以覆盖此属性的任何位置,或者存在未正确使用 XML 配置的已知问题?

最佳答案

菜鸟错误。我使用的配置列在单独的 <profile> 中未执行的 block 。配置文件包含:

<activeByDefault>true</activeByDefault>

根本不包含自己的 Surefire 配置(因此它不会出现在搜索中),并且使用继承的值,这解释了为什么命令行系统属性能够影响其行为。

关于java - Maven Surefire 仅在命令行上确认 "forkMode",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414348/

相关文章:

java - 如何将 UTF-8 字节 block 转换为字符?

Android Maven 项目 - 在 pom.xml 中出现错误

java - Heroku 404 错误/找不到全局 web.xml

java - 使用父模块作为依赖项

java - Hibernate 关闭时运行脚本

java - 如何使用 firebase recyclerview 设置壁纸应用程序?

java - 链表不更新值

Eclipse中的Java测试,编写方法

java - Apache HttpClient 4 每个代理而不是每个路由的持久连接

java - 当我发送匹配器作为参数时,Mockito InvalidUseOfMatchersException