【问题标题】:OutOfMemoryError when trying to get test coverage with Jacoco尝试使用 Jacoco 获得测试覆盖率时出现 OutOfMemoryError
【发布时间】:2014-01-30 01:25:22
【问题描述】:
我有一个大约 60K 行代码的 android 项目,我们使用 gradle 构建应用程序并使用 robolectric 运行单元测试。我们最近应用了 jacoco 插件来获取单元测试的覆盖率数据,但是,在大约 140 次测试之后,其余的测试开始失败并出现 OutOfMemoryError 异常。
我尝试使用 gradle.properties 来更改 JVM 的堆大小,但似乎没有帮助。
任何帮助将不胜感激。非常感谢。
【问题讨论】:
标签:
android
gradle
code-coverage
android-gradle-plugin
jacoco
【解决方案1】:
您是否尝试过以下操作:
-
在用户的 ~/.bash_profile 文件中设置以下内容
导出 GRADLE_OPTS="-XX:MaxPermSize=512m"
-
在 GRADLE_HOME/bin/gradle 可执行(shell 脚本)文件中,将以下行更改为:
DEFAULT_JVM_OPTS="$JAVA_OPTS $GRADLE_OPTS"
以上假设,您也设置了一些 JAVA xxx mem 变量
-
包括平行叉等。
test {
maxParallelForks = 5
forkEvery = 50
ignoreFailures = true
// Send HTML reports and xml results files to a custom user defined folder instead of default
testReportDir = file("$buildDir/reports/tests/UnitTests")
testResultsDir = file("$buildDir/test-results/UnitTests")
testLogging.showStandardStreams = true
onOutput { descriptor, event ->
logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
}
}
看看,这有帮助吗?