如果一个未被仪器化的单元测试(不是从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中添加:
我不知道使用ArrayMap的方法,因为它与json不同,实际上是Android源代码的一部分。我认为它不可在外部使用(我在jcenter上没有找到它)。
有什么想法吗?我不想在模拟器上运行慢速Android(instrumented)测试,只是为了测试使用基本集合类(并且模拟它们的方法似乎很疯狂!)的模型层类。
在许多情况下,解决这个错误的最佳方法是将包含有问题类的包直接编译到测试目标中,例如使用json,在build.gradle中添加:
testCompile 'org.json:json:20160212'
我不知道使用ArrayMap的方法,因为它与json不同,实际上是Android源代码的一部分。我认为它不可在外部使用(我在jcenter上没有找到它)。
有什么想法吗?我不想在模拟器上运行慢速Android(instrumented)测试,只是为了测试使用基本集合类(并且模拟它们的方法似乎很疯狂!)的模型层类。