如何在非仪器化的Android单元测试中使用ArrayMap?

4
如果一个未被仪器化的单元测试(不是从AndroidTestCase子类继承的)调用使用ArrayMap的代码,则会遇到臭名昭著的“Method xxx in xx.xx.xx not mocked”错误(请参见http://tools.android.com/tech-docs/unit-testing-support#TOC-Method-...-not-mocked.-)。
在许多情况下,解决这个错误的最佳方法是将包含有问题类的包直接编译到测试目标中,例如使用json,在build.gradle中添加:
testCompile 'org.json:json:20160212'

我不知道使用ArrayMap的方法,因为它与json不同,实际上是Android源代码的一部分。我认为它不可在外部使用(我在jcenter上没有找到它)。
有什么想法吗?我不想在模拟器上运行慢速Android(instrumented)测试,只是为了测试使用基本集合类(并且模拟它们的方法似乎很疯狂!)的模型层类。
2个回答

1

可以使用androidx.collection.ArrayMap代替android.util.ArrayMap


0
我能想到的最好解决方法是使用像 Apache 的常用集合那样实现映射的库,例如他们的HasedMap。这样做虽然很简单,但必须包含另一个库,有些笨拙。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接