我们正在从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*'
}
请看屏幕截图
内存使用情况
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
内存使用情况
有没有人知道如何描述这个问题?
答案 0 :(得分:1)
最后,我们找到了缓慢的原因。这不是gradle的错(差不多),而是我们的应用程序日志设计的错误。有关此问题的详细信息,请参阅my answer on gradle forum。