Gradle - jUnit测试中的性能不佳

时间:2013-11-27 13:35:55

标签: performance junit gradle

我们正在从ant build脚本转向gradle。在我们开始运行jUnit集成测试之前,一切看起来都很好。在夜间运行需要大约2个小时(通过蚂蚁),但用gradle运行相同的测试大约需要5个小时。这很奇怪。通过简短的调查,我发现测试类中的方法数量存在一定的相关性。数字越大,测试越慢。现在我正在运行一个包含28种测试方法的测试类。从蚂蚁或从eclipse或intellij想法运行需要1分钟,而从gradle运行相同的测试需要3分30秒。我尝试使用1.8和1.9 gradle。

测试任务:

task testSingle(type: Test) {
    classpath = configurations.coreTest

    maxHeapSize = '1G'
    jvmArgs '-XX:MaxPermSize=192M'

    include 'com/test/core/CAllocateGainTest*'
}

请看屏幕截图

  • 使用gradle运行测试

内存使用情况

  • Gradle过程

  • 带有jUnit测试的fork gradle worker

  • 在eclipse中运行相同的测试

Eclipse设置

更新

当我使用具有类似配置的ant的junit任务时(参见下面的代码片段),测试运行就好了:

task testAllocateGains() {
    ant.junit(fork: 'yes', maxmemory: '1G') {
        formatter(type: 'xml')
        classpath(path: configurations.coreTest.asPath)

        jvmarg(value: '-XX:MaxPermSize=129M')

        batchtest(todir: 'build/test-results') {
            fileset(dir: 'build/classes/test') {
                include (name: 'com/test/core/CAllocateGainTest*')
            }
        }
    }
}

控制台输出:

$ gradle testAllocateGains
:testAllocateGains UP-TO-DATE

BUILD SUCCESSFUL

Total time: 1 mins 15.575 secs

内存使用情况

  • Gradle过程

  • 分叉ant jUnit进程

有没有人知道如何描述这个问题?

1 个答案:

答案 0 :(得分:1)

最后,我们找到了缓慢的原因。这不是gradle的错(差不多),而是我们的应用程序日志设计的错误。有关此问题的详细信息,请参阅my answer on gradle forum