मुझे एंड्रॉइड स्टूडियो में उपकरण परीक्षण चलाने में कठिनाई हो रही है।
जब मैं एकाधिक परीक्षण मामलों को चलाने का प्रयास करता हूं, तो "टेस्ट फ्रेमवर्क अप्रत्याशित रूप से छोड़ दिया जाता है" दिखाता है:
... और सभी परीक्षण एमुलेटर में चलते रहते हैं, लेकिन एंड्रॉइड स्टूडियो को परिणाम वापस नहीं मिल रहे हैं।
लॉगकैट यह दिखाता है:
...
03-17 11:38:59.236 1699 1719 W ActivityManager: Scheduling restart of crashed service androidx.test.orchestrator/.OrchestratorService in 1000ms
03-17 11:38:59.236 1699 1719 W ActivityManager: Crash of app androidx.test.orchestrator running instrumentation ComponentInfo{androidx.test.orchestrator/androidx.test.orchestrator.AndroidTestOrchestrator}
03-17 11:38:59.236 1699 1721 W zygote : kill(-8537, 9) failed: No such process
03-17 11:38:59.238 1699 13861 W Binder : Outgoing transactions from this process must be FLAG_ONEWAY
03-17 11:38:59.238 1699 13861 W Binder : java.lang.Throwable
03-17 11:38:59.238 1699 13861 W Binder : at android.os.BinderProxy.transact(Binder.java:752)
03-17 11:38:59.238 1699 13861 W Binder : at android.app.IInstrumentationWatcher$Stub$Proxy.instrumentationFinished(IInstrumentationWatcher.java:160)
03-17 11:38:59.238 1699 13861 W Binder : at com.android.server.am.InstrumentationReporter$MyThread.run(InstrumentationReporter.java:86)
03-17 11:38:59.281 1699 1721 W zygote : kill(-8537, 9) failed: No such process
03-17 11:38:59.323 1699 1721 W zygote : kill(-8537, 9) failed: No such process
03-17 11:38:59.353 13845 13845 W app_process: Unexpected CPU variant for X86 using defaults: x86
03-17 11:38:59.362 1699 1721 W zygote : kill(-8537, 9) failed: No such process
03-17 11:38:59.385 1699 1741 W PackageManager: Code path for androidx.test.orchestrator changing from /data/app/androidx.test.orchestrator-fgDRlA7iNSNiyWm4dLj4hg== to /data/app/androidx.test.orchestrator-6QljegpCqjAHwDuS_O9G9Q==
03-17 11:38:59.385 1699 1741 W PackageManager: Resource path for androidx.test.orchestrator changing from /data/app/androidx.test.orchestrator-fgDRlA7iNSNiyWm4dLj4hg== to /data/app/androidx.test.orchestrator-6QljegpCqjAHwDuS_O9G9Q==
03-17 11:38:59.424 13845 13870 W MessageQueue: Handler (android.os.Handler) {9320712} sending message to a Handler on a dead thread
03-17 11:38:59.424 13845 13870 W MessageQueue: java.lang.IllegalStateException: Handler (android.os.Handler) {9320712} sending message to a Handler on a dead thread
03-17 11:38:59.424 13845 13870 W MessageQueue: at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
03-17 11:38:59.424 13845 13870 W MessageQueue: at android.os.Handler.enqueueMessage(Handler.java:662)
03-17 11:38:59.424 13845 13870 W MessageQueue: at android.os.Handler.sendMessageAtTime(Handler.java:631)
03-17 11:38:59.424 13845 13870 W MessageQueue: at android.os.Handler.sendMessageDelayed(Handler.java:601)
03-17 11:38:59.424 13845 13870 W MessageQueue: at android.os.Handler.post(Handler.java:357)
03-17 11:38:59.424 13845 13870 W MessageQueue: at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:57)
03-17 11:38:59.424 13845 13870 W MessageQueue: at com.android.internal.os.IResultReceiver$Stub.onTransact(IResultReceiver.java:58)
03-17 11:38:59.424 13845 13870 W MessageQueue: at android.os.Binder.execTransact(Binder.java:697)
03-17 11:38:59.436 13768 13850 W zygote : Long monitor contention with owner firebase-iid-executor (13808) at void java.lang.AbstractStringBuilder.ensureCapacityInternal(int)(AbstractStringBuilder.java:124) waiters=0 in java.util.TimeZone java.util.TimeZone.getTimeZone(java.lang.String) for 114ms
03-17 11:38:59.519 13768 13768 W ResourceType: Failure getting entry for 0x7f0c0112 (t=11 e=274) (error -75)
03-17 11:38:59.520 13768 13768 W ResourceType: Failure getting entry for 0x7f0c0113 (t=11 e=275) (error -75)
03-17 11:38:59.608 1571 1809 E : Couldn't opendir /data/app/vmdl185214765.tmp: No such file or directory
03-17 11:38:59.608 1571 1809 E installd: Failed to delete /data/app/vmdl185214765.tmp: No such file or directory
03-17 11:38:59.695 1699 1719 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:androidx.test.orchestrator flg=0x4000010 (has extras) } to com.google.android.gms/.games.chimera.GamesSystemBroadcastReceiverProxy
03-17 11:38:59.702 1699 1719 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:androidx.test.orchestrator flg=0x4000010 (has extras) } to com.google.android.gms/.photos.autobackup.PhotosAppUninstalledReceiver
...
मेरी परीक्षण निर्भरता:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-web:3.2.0'
androidTestImplementation ('androidx.test.espresso:espresso-contrib:3.2.0') {
exclude module: 'support-compat'
}
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.2.0'
androidTestImplementation 'androidx.test:core:1.2.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
androidTestUtil 'androidx.test:orchestrator:1.2.0'
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
मुझे एंड्रॉइड स्टूडियो में इंस्टेंट रन को अक्षम करने के लिए "टेस्ट फ्रेमवर्क अनपेक्षित रूप से छोड़ दिया गया" और "इस प्रक्रिया से आउटगोइंग लेनदेन FLAG_ONEWAY होना चाहिए" दोनों के कुछ संदर्भ मिले हैं, लेकिन 3.5 के बाद से कोई तत्काल रन नहीं है, इसका नाम बदलकर कोड परिवर्तन लागू करें, और मुझे इसे बंद करने का कोई विकल्प नहीं दिख रहा है।
कोई विचार इस के साथ कैसे आगे बढ़ना है?
कृपया मदद करें।
8 जवाब
ऐसा लगता है कि यह 3.6 के रूप में एक बग है।
Reddit में इस सूत्र के अनुसार: https://www.reddit.com/ r/androiddev/comments/f9xsz2/anyone_else_having_issues_running_androidtest/
इसे 3.6.2 में तय किया जाएगा।
जैसा कि Victor Carbalho ने उल्लेख किया है, यह Android Studio 3.6.1 . में एक बग है https://stackoverflow.com/a/60727631/2353939
मैं इस समय ऑर्केस्ट्रेटर को अक्षम करता हूं।
testOptions {
// execution 'ANDROIDX_TEST_ORCHESTRATOR'
}
dependencies {
// androidTestUtil 'androidx.test:orchestrator:1.2.0'
}
मैं AS 4.1.1 पर हूं और यदि आप fragment-testing
आर्टिफैक्ट का उपयोग करते हैं तो बग अभी भी मौजूद है। उपरोक्त समाधानों में से कोई भी काम नहीं किया।
मेरे मामले में जो समस्या हल हुई वह थी core
निर्भरता को आर्टिफैक्ट से बाहर करना
debugImplementation ("androidx.fragment:fragment-testing:1.2.5", {
exclude group: 'androidx.test', module: 'core'
})
परीक्षण में एक पूर्ण शुरुआत के रूप में, मुझे यह त्रुटि तब मिली जब मैंने अपनी मॉड्यूल-स्तरीय बिल्ड.ग्रेड फ़ाइल में - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" नहीं जोड़ा।
दूसरों के साथ ऐसा नहीं हो सकता है, लेकिन मैंने इसे जोड़ते समय इसे हल किया। दस्तावेज़ीकरण के अनुसार
JUnit 4 परीक्षण कक्षाओं का उपयोग करने के लिए, अपने ऐप की मॉड्यूल-स्तरीय बिल्ड.ग्रेड फ़ाइल में निम्न सेटिंग शामिल करके अपने प्रोजेक्ट में AndroidJUnitRunner को डिफ़ॉल्ट परीक्षण इंस्ट्रूमेंटेशन रनर के रूप में निर्दिष्ट करना सुनिश्चित करें:
तो आप इसे जोड़कर इसे आजमा सकते हैं।
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
एंड्रॉइड स्टूडियो 4.1 में एक ही त्रुटि मिली, निर्भरता के नीचे जोड़ना
androidTestImplementation "androidx.test.espresso:espresso-core:x.x.x"
जोड़ने के साथ
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
समस्या का हल किया
विटोर कार्वाल्हो सही है कि यह एक एंड्रॉइड स्टूडियो v3.6.1 मुद्दा है। मैंने इसे एंड्रॉइड स्टूडियो को अनइंस्टॉल करके और फिर वापस v3.5.3 पर डाउनग्रेड करके हल किया।
एंड्रॉइड स्टूडियो को अनइंस्टॉल करने के लिए, इस उत्तर के मार्गदर्शन का पालन करें, जो अनिवार्य रूप से नीचे आता है:
इन आदेशों को टर्मिनल में निष्पादित करें (हैशटैग वाली पंक्तियों को छोड़कर - वे टिप्पणियां हैं):
# Deletes the Android Studio application # Note that this may be different depending on what you named the application as, or whether you downloaded the preview version rm -Rf /Applications/Android\ Studio.app # Delete All Android Studio related preferences # The asterisk here should target all folders/files beginning with the string before it rm -Rf ~/Library/Preferences/AndroidStudio* # Deletes the Android Studio's plist file rm -Rf ~/Library/Preferences/com.google.android.* # Deletes the Android Emulator's plist file rm -Rf ~/Library/Preferences/com.android.* # Deletes mainly plugins (or at least according to what mine (Edric) contains) rm -Rf ~/Library/Application\ Support/AndroidStudio* # Deletes all logs that Android Studio outputs rm -Rf ~/Library/Logs/AndroidStudio* # Deletes Android Studio's caches rm -Rf ~/Library/Caches/AndroidStudio* # Deletes older versions of Android Studio rm -Rf ~/.AndroidStudio*
फिर, Android Studio संग्रह से Android Studio का पिछला वर्शन इंस्टॉल करें।
यह मेरे लिए तब काम आया जब मैंने फ़ाइल-> अमान्य कैश और एंड्रॉइड 4.1 पर पुनरारंभ किया,
नीचे दी गई चीजों को हटाने या टिप्पणी करने से वास्तविक उद्देश्य हल नहीं होता है:
testOptions {
// execution 'ANDROIDX_TEST_ORCHESTRATOR'
}
dependencies {
// androidTestUtil 'androidx.test:orchestrator:1.2.0'
}
अनुशंसा के अनुसार: https://developer.android.com/training/ test/junit-runner#ato-gradle, हमें इसका उपयोग करना चाहिए।
मुझे भी इसी तरह की समस्या का सामना करना पड़ा जैसे परीक्षण मामलों को चलाने के दौरान, "ढांचा अप्रत्याशित रूप से छोड़ दिया गया" संदेश आ रहा था क्योंकि मैं 3.6.1 एंड्रॉइड स्टूडियो संस्करण का उपयोग कर रहा था।
Android स्टूडियो को 4.0.1 संस्करण में अपडेट करने के बाद, इस समस्या का समाधान कर दिया गया है। मैं अब सभी परीक्षण मामलों को सफलतापूर्वक निष्पादित करने में सक्षम हूं।
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।