java.lang.NoSuchMethodError:使用带有Robolectric的XmlPullParser的java.lang.System.arraycopy

时间:2015-07-08 07:19:38

标签: java android unit-testing robolectric xmlpullparser

我正在尝试使用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端实现解析器是否有问题?

2 个答案:

答案 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