【问题标题】:Android studio 1.3 unable to get entire tests to runAndroid Studio 1.3 无法运行整个测试
【发布时间】:2015-08-18 02:25:33
【问题描述】:

在 android studio 1.3 中,我无法运行整个测试用例。我可以毫无问题地运行单个测试用例,但是当我尝试运行所有测试时出现以下错误:

  Exception: java.lang.OutOfMemoryError thrown from the 
UncaughtExceptionHandler in thread "Test worker" java.lang.OutOfMemoryError: PermGen space

我试图从 shell 和 android studio 增加我的记忆,但它根本没有帮助。

JAVA_OPTS=-Xmx2048m -XX:MaxPermSize=768m
JAVA_TOOL_OPTIONS=-Xmx1024m -XX:MaxPermSize=512m -Xms512m

我的测试都是模拟的(我有一种叫做模拟的味道)所以我切换到构建变体 mockDebug 然后我在终端上运行以下命令:

./gradlew :app:TestMockDebug

我的测试使用 robolectric 作为测试运行器。

另一个有趣的事情是,如果我从项目资源管理器中右键单击包含测试的包并执行“在包中运行测试......”然后它会运行测试。所以我唯一的问题是让它从命令行运行。

【问题讨论】:

  • 我最近也遇到了这个问题。我通过了我的测试并添加了很多拆解方法,我为我的间谍实例执行reset()。它帮助了一点,但我不时得到这个例外。我的清单上有一个待办事项,可以完全重做一些测试,以消除间谍并尽可能减少模拟

标签: android unit-testing android-studio robolectric


【解决方案1】:

为了解决这个内存不足异常,我通过如下设置 shell 环境变量添加了更多内存:

    export JAVA_OPTS="-Xmx2048m -XX:MaxPermSize=768m"
export JAVA_TOOL_OPTIONS="-Xmx1024m -XX:MaxPermSize=512m -Xms512m"

即使我在 gradle.properties 中设置了内存,但从命令行看起来这些属性是看不到的。所以必须设置命令行java选项来增加内存。如果您在执行此操作后检查终端日志,您会看到类似这样的行证明相同:

Picked up JAVA_TOOL_OPTIONS: -Xmx1024m -XX:MaxPermSize=512m -Xms512m

【讨论】:

    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多