के साथ यादृच्छिक रूप से विफल रहता है मेरे एंड्रॉइड ऐप में मेरे पास मल्टीडेक्सिंग सक्षम है। एप्यूलेटर पर ऐप ठीक चलाता है। मैं ऐप का परीक्षण करने के लिए रोबोटियम का उपयोग कर रहा हूं। लेकिन जब मैं उपकरण परीक्षण मामलों को निष्पादित करता हूं, कभी-कभी परीक्षण पास होता है, लेकिन ज्यादातर वे सिस्टम रीबूट के बाद भी असफल होते हैं। पास होने और विफल होने के बीच कोई कोड परिवर्तन नहीं होता है।इंस्ट्रुमेंटेशन टेस्ट मल्टीडेक्सिंग सक्षम
डिफ़ॉल्ट Gradle विन्यास:
android {
defaultConfig {
applicationId "com.example.androidapp"
minSdkVersion 16
targetSdkVersion 23
multiDexEnabled true
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
testProguardFile "proguard-test.txt"
}
}
इसके अलावा परीक्षा के लिए जोड़ने निर्भरता:
androidTestCompile fileTree(dir: 'libs', include:'robotium-solo-5.3.0.jar')
androidTestCompile ('com.android.support:multidex-instrumentation:1.0.1') {
exclude group: 'com.android.support', module: 'multidex' }
AndroidManifest.xml में मैं के रूप में आवेदन टैग का उल्लेख किया है:
<application
android:name="StartupActivity"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" ...../>
मैं विस्तार किया है स्टार्टअपएक्टिविटी में "android.support.multidex.MultiDex अनुप्रयोग"। बार जब उपकरण परीक्षण मामलों गिर मैं निम्नलिखित त्रुटि मिलती है:
INSTRUMENTATION_RESULT: shortMsg=java.lang.IllegalAccessError
INSTRUMENTATION_RESULT: longMsg=java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
INSTRUMENTATION_CODE: 0
logcat में त्रुटि संदेश है:
W/dalvikvm﹕ Class resolved by unexpected DEX: Lcom/example/androidapp/StartupActivity;(0xa695df08):0x9910e000 ref [Landroid/support/multidex/MultiDexApplication;] Landroid/support/multidex/MultiDexApplication;(0xa695df08):0x99a2c000
W/dalvikvm﹕ (Lcom/example/androidapp/StartupActivity; had used a different Landroid/support/multidex/MultiDexApplication; during pre-verification)
W/dalvikvm﹕ Unable to resolve superclass of Lcom/example/androidapp/StartupActivity; (540)
W/dalvikvm﹕ Link of class 'Lcom/example/androidapp/StartupActivity;' failed
D/AndroidRuntime﹕ Shutting down VM
W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa628c288)
परीक्षण वर्ग को कुछ हद तक दिखाई देता है:
public class HelloActivityTest extends ActivityInstrumentationTestCase2<HelloActivity> {
private Solo solo;
public HelloActivityTest() {
super(HelloActivityTest.class);
}
@Override
public void setUp() throws Exception {
setActivityInitialTouchMode(false);
solo = new Solo(getInstrumentation(), getActivity());
}
public void test1() {}
public void test2() {}
}
मैं एंड्रॉइड टेस्ट के रूप में टेस्ट केस चला रहा हूं। मैं समझने में असमर्थ हूं कि कौन सी निर्भरता कोड को गड़बड़ कर रही है। इसके अलावा, कोड की यादृच्छिक विफलताओं पर संदेह है। कृपया मदद करे।
मेरी टीम के सदस्यों ने एस्प्रेसो परीक्षण और मल्टीडेक्स के संबंध में समान चीजों पर टिप्पणी की है। अधिक यह है कि यह पहचानने में विफल रहता है कि मल्टीडेक्स सक्षम के साथ चलाने के लिए परीक्षण हैं ... – OceanLife
@OceanLife क्या आपको कोई समाधान मिला? – whitepearl
नहीं, हमने अभी तक नहीं किया है। यह मल्टीडेक्स के बिना विश्वसनीय है इसलिए मैंने सुझाव दिया है कि हम कुछ एनालिटिक्स libs को संकलित करते हैं जो चीजों को एक अंतरिम समाधान के रूप में उछाल रहे हैं ... बस मल्टीडेक्स की आवश्यकता नहीं होने के लिए वापस जाने के लिए। आपका त्रुटि संदेश (अप्रत्याशित रूप से) मुझे जावा की एसडीके असंगतता त्रुटियों की याद दिलाता है, जिसे "VerifyError" कहा जाता है ... भारी बिट्स को हटाने के लिए कुछ प्रोजेक्टिंग प्राप्त करें ... – OceanLife