2015-07-08 5 views
2

Я пытаюсь протестировать свое Android-приложение в Android-Studio с Robolectric. Один из моих модульных тестов использует XmlPullParser:java.lang.NoSuchMethodError: java.lang.System.arraycopy с помощью XmlPullParser с Robolectric

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 стороне?

+1

изменить вашу версию api – Burusothman

+0

@Exbury Спасибо! Действительно, он работает, когда я переключаюсь на API 18! –

ответ

2

Эти проблемы я столкнулся несколько месяцев назад. Изменится ошибка версии API для Android. Подробнее см. this.

2

Если кто-то наткнулся на эту проблему, она исходит из версии SDK.

В тестовом случае просто перейти от:

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

к:

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

Спасибо @Exbury за подсказку!