java.lang.NoSuchMethodError: java.lang.System.arraycopy using XmlPullParser with Robolectric
java.lang.NoSuchMethodError: java.lang.System.arraycopy using XmlPullParser with Robolectric
我正在尝试使用 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端解析器的实现有问题吗?
如果有人偶然发现这个问题,它来自 SDK 的版本。
在测试用例中,只需切换自:
@Config(constants = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml")
至:
@Config(constants = BuildConfig.class, sdk = 18, manifest = "src/main/AndroidManifest.xml")
感谢@Exbury 的提示!
几个月前我遇到了这个问题。更改你的androidAPI版本错误会丢失。更多信息请参阅 this。
我正在尝试使用 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端解析器的实现有问题吗?
如果有人偶然发现这个问题,它来自 SDK 的版本。
在测试用例中,只需切换自:
@Config(constants = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml")
至:
@Config(constants = BuildConfig.class, sdk = 18, manifest = "src/main/AndroidManifest.xml")
感谢@Exbury 的提示!
几个月前我遇到了这个问题。更改你的androidAPI版本错误会丢失。更多信息请参阅 this。