Android Robolectric:OutOfMemoryError-创建ArrayList时超出了GC开销限制

时间:2019-02-15 15:31:43

标签: android arraylist kotlin garbage-collection robolectric

我想为返回ArrayList的方法创建测试。 ArrayList类型是名为DateItem的自定义对象。但是,当我尝试在测试代码(位于ArrayList文件夹中)中创建test时,测试失败,并显示以下消息:

java.lang.OutOfMemoryError: GC overhead limit exceeded

Process finished with exit code 255

这是我的代码:

var expectedDateItems: ArrayList<DateItem> = ArrayList()
val currentDate = date1Start
while (currentDate.isBefore(date1End)) {
    val dateItem = DateItem(currentDate, ArrayList())
    expectedDateItems.add(dateItem)
    currentDate.plusDays(1)
}

我想知道如何在测试代码中创建这样的ArrayList。我研究了this answer,但这是针对整个应用程序的,不仅用于测试目的。如何为单元测试分配更多的内存?

编辑:调试后,代码在以下行中失败:val dateItem = DateItem(currentDate, ArrayList())

1 个答案:

答案 0 :(得分:3)

实际上,您有无限个WHILE循环,因为currentDate.plusDays(1)返回了currentDate中的copy。更改为:

currentDate = currentDate.plusDays(1)