Java.lang.NoSuchMethodError: java.lang.System.arraycopy using XmlPullParser with Robolectric

I am trying to test my Android app in Android Studio with Robolectric. One of my unit tests uses 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){
    // ...
}

Here is what happens when I run the test:

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)

Is there a problem with parser implementation on Robolectric side?

+2
source share
2 answers

These problems I encountered a few months ago. Android API version error will change. See more details.

+2
source

If someone stumbled upon this problem, this comes from the SDK version.

In the test case, just switch from:

@Config(constants = BuildConfig.class, sdk = 21, manifest = "src/main/AndroidManifest.xml")

at

@Config(constants = BuildConfig.class, sdk = 18, manifest = "src/main/AndroidManifest.xml")

Thanks @Exbury for the tip!

+2

All Articles