【问题标题】:Gradle equivalent for Maven Surefire surefire.forkNumberGradle 等同于 Maven Surefire surefire.forkNumber
【发布时间】:2018-02-14 09:49:23
【问题描述】:

我正在将代码库从 Maven 迁移到 Gradle。
在我们的集成测试中,我们使用 FailSafe 功能在多个线程中并行运行测试。
FailSafe 正在设置系统属性名称surefire.forkNumber 与当前线程运行的特定分支的编号。

使用 Gradle 运行 JUnit 时是否有等效参数?

【问题讨论】:

    标签: gradle junit4


    【解决方案1】:

    Gradle 中的test 任务具有maxParallelForks 属性来指示测试并行运行。 要从命令行传递一个属性来设置值,我们可以在我们的构建文件中定义以下test 配置:

    // File: build.gradle
    ...
    // Set maxParallelForks using project property
    // testMaxParallelForks if set otherwise use 1.
    test.maxParallelForks = project.findProperty('testMaxParallelForks') ?: 1
    ...
    

    然后我们可以从命令行运行test任务:$ gradle test -PtestMaxParallelForks=8

    Gradle 使用运行测试的线程的索引号设置 Java 系统属性 org.gradle.test.worker。可以在并行线程上运行的测试中读取和使用此属性。

    【讨论】:

    • 谢谢,surefire.forkNumber 实际上是分配给每个线程的运行索引,因此如果将maxParallelForks 设置为3,则三个线程中的每一个都将具有surefire.forkNumber=1surefire.forkNumber=2、和surefire.forkNumber=3。不知道 Gradle 的 JUnit runner 中是否有类似的东西?
    • 谢谢@mrhaki,效果很好。这是来源的链接:docs.gradle.org/current/userguide/…
    • 需要注意的一点是,当使用 Gradle Daemon 时,worker 的数量不断增加,这可能是某些实现的问题。
    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 2019-06-26
    • 2016-09-24
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多