使用Android-Espresso运行多个测试时出现内存不足异常

时间:2015-03-24 07:59:21

标签: android testing android-espresso gui-testing ui-testing

我有很多测试,分隔在不同的文件中,当我单独运行每个类时它运行正常。但是当我在项目中运行所有测试时,我在最后一个测试类中得到了这个错误。

android.view.InflateException: Binary XML file line #82: Error inflating class <unknown>

Caused by: java.lang.OutOfMemoryError: Failed to allocate a 17462912 byte allocation with 15698580 free bytes and 14MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:973)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2423)
at android.content.res.Resources.loadDrawable(Resources.java:2330)
at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
at android.widget.ImageView.<init>(ImageView.java:146)
at android.widget.ImageView.<init>(ImageView.java:135)
at android.widget.ImageView.<init>(ImageView.java:131)
... 23 more

1 个答案:

答案 0 :(得分:1)

我认为这不是特别因为Espresso本身,虽然我可能错了,但更多是因为一起运行所有这些测试会导致创建一些限制可用内存的条件。这不是一件坏事,因为这是生产中可能发生的事情。

查看您的日志:

// ......
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 17462912 byte allocation with 15698580 free bytes and 14MB until OOM

at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
// .....

这是尝试加载大图像时常见的错误,并且没有足够的内存来存储它。

通常,解决方案涉及某种预处理,例如在将位图加载到内存之前缩小位图。

我建议您参加本课程,了解加载大型位图时的情况,以及如何有效地显示它们:https://developer.android.com/training/displaying-bitmaps/index.html