我正在尝试使用Robolectric在Android-Studio中测试我的Android应用。我的一个单元测试使用了XmlPullParser
:
InputStream in = new FileInputStream(new File("somefile.xml"));
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in, null);
parser.nextTag();
while(parser.next()!=XmlPullParser.END_DOCUMENT){
// ...
}
以下是我运行测试时会发生的事情:
java.lang.NoSuchMethodError: java.lang.System.arraycopy([II[III)V
at org.kxml2.io.KXmlParser.parseStartTag(KXmlParser.java:1145)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:372)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
at xxx.Xxxx.readTag(Xxxx.java:167)
在Robolectric端实现解析器是否有问题?
答案 0 :(得分:3)
如果有人遇到这个问题,它会来自SDK的版本。
在测试用例中只需切换:
@Config(constants = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml")
为:
@Config(constants = BuildConfig.class, sdk = 18, manifest = "src/main/AndroidManifest.xml")
感谢@Exbury的提示!
答案 1 :(得分:2)
几个月前我遇到了这个问题。更改您的Android API版本错误将丢失。更多信息,请参阅this。