मैन्युअल रूप से adb
कमांड चलाने के बिना एक उपकरण परीक्षण से पहले एप्लिकेशन डेटा को साफ़ करने के लिए एंड्रॉइड स्टूडियो (AndroidJunitRunner) कैसे प्राप्त कर सकता हूं?एंड्रॉइड स्टूडियो - इंस्ट्रूमेंटेशन टेस्ट के लिए स्पष्ट एप्लिकेशन डेटा
मुझे पता चला कि धोखा की android.support.test.runner.AndroidJUnitRunner
तरह - यह वास्तव में connectedCheck
या connectedAndroidTest
कभी नहीं invokes।
कमांड लाइन से चलाते हैं
$ gradle connectedCheck
:MyMainApp:assembleDebug UP-TO-DATE :MyMainApp:assembleDebugTest UP-TO-DATE :MyMainApp:clearMainAppData :MyMainApp:connectedCheck
जब उपकरण परीक्षण विन्यास (लाल/हरी तीर के साथ हरे रंग की Android रोबोट लोगो)
**Executing tasks: [:MyMainAppApp:assembleDebug, :MyMainAppApp:assembleDebugTest]**
क्लिक करके आईडीई के भीतर से चलाने जैसा कि आप देख सकते हैं, अंतिम ग्रेडल लक्ष्य
assembleDebugTest
मैंने उपकरण परीक्षण शुरू करने से पहले मुख्य ऐप के डेटा को साफ़ करने के लिए build.gradle
में connectedCheck
पर एक हुक जोड़ा था।
// Run 'adb' shell command to clear application data of main app for 'debug' variant
task clearMainAppData(type: Exec) {
// we have to iterate to find the 'debug' variant to obtain a variant reference
android.applicationVariants.all { variant ->
if (variant.name.equals("debug")) {
def clearDataCommand = ['adb', 'shell', 'pm', 'clear', getPackageName(variant)]
println "Clearing application data of ${variant.name} variant: [${clearDataCommand}]"
commandLine clearDataCommand
}
}
}
// Clear Application Data (once) before running instrumentation test
tasks.whenTaskAdded { task ->
// Both of these targets are equivalent today, although in future connectedCheck
// will also include connectedUiAutomatorTest (not implemented yet)
if(task.name.equals("connectedAndroidTest") || task.name.equals("connectedCheck")){
task.dependsOn(clearMainAppData)
}
}
मुझे लगता है कि वैकल्पिक रूप से मैं एक मुख्य अनुप्रयोग में 'स्पष्ट डेटा' बटन को लागू कर सकता है और इंस्ट्रूमेंटेशन एप्लिकेशन यूआई के माध्यम से क्लिक किया है, लेकिन मुझे लगता है कि समाधान अवांछनीय पाते हैं।
मैंने AndroidJUnitRunner
एपीआई देखा और Runlistener
इंटरफ़ेस के माध्यम से हुक हैं लेकिन हुक परीक्षण ऐप के संदर्भ में हैं, यानी डिवाइस पर चल रहे हैं, और एंड्रॉइड एक ऐप को अन्य ऐप को संशोधित करने से रोकता है। http://junit.sourceforge.net/javadoc/org/junit/runner/notification/RunListener.html
सर्वश्रेष्ठ उत्तर आप को जाता है अगर आप मदद कर सकते हैं मुझे एंड्रॉयड स्टूडियो के भीतर से की निम्नलिखित स्वचालित रूप से एक को गति प्रदान:
- एक कमांड लाइन
adb shell pm clear my.main.app.package
निष्पादित, - या अधिमानतः मेरी Gradle कार्य आह्वान
clearMainAppData
यदि कोई बदलाव होता है तो मैं भी सभी कान हूं नाइट मार्ग। निश्चित रूप से डिवाइस परीक्षण स्वचालन के साथ आवेदन डेटा को साफ़ करने के लिए एक स्पष्ट तरीका होना चाहिए?
धन्यवाद!
कोई प्रतिक्रिया नहीं है, इसलिए मुझे लगता है कि ज्यादातर लोग केवल प्रारंभिक प्रक्रिया के रूप में ऐप इंस्टॉल करने पर भरोसा करते हैं। –
@ razzle-shazi ने आपके लिए nsimons समाधान काम किया था? –