Wie kann ich Android Studio (AndroidJunitRunner) erhalten, um Anwendungsdaten vor einem Instrumentierungstest zu löschen, ohne den Befehl adb
manuell auszuführen?Android Studio - klare Anwendungsdaten für Instrumentierungstest
ich, dass android.support.test.runner.AndroidJUnitRunner
Art von Cheats entdeckt - es ruft nie wirklich connectedCheck
oder connectedAndroidTest
.
Wenn von der Kommandozeile ausgeführt
$ gradle connectedCheck
:MyMainApp:assembleDebug UP-TO-DATE :MyMainApp:assembleDebugTest UP-TO-DATE :MyMainApp:clearMainAppData :MyMainApp:connectedCheck
Wenn innerhalb IDE lief durch die Instrumentierung Testkonfiguration (grün Android Roboter-Logo mit rot/grünen Pfeilen) klicken
**Executing tasks: [:MyMainAppApp:assembleDebug, :MyMainAppApp:assembleDebugTest]**
Wie Sie sehen können, ist die letzte Zielscheibe
assembleDebugTest
Ich hatte einen Haken auf connectedCheck
in build.gradle
hinzugefügt, um die Daten der Haupt-App zu löschen, bevor Sie den Instrumentierungstest starten.
// 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)
}
}
Mir ist klar, dass alternativ könnte ich eine ‚Daten löschen‘ Button in der Hauptanwendung implementieren und haben die Instrumentierung App über die Benutzeroberfläche klicken, aber ich finde diese Lösung unerwünscht.
Ich sah API und es gibt Haken über Runlistener
Schnittstelle, aber Haken sind im Kontext der Test-App, d. H. Auf dem Gerät ausgeführt, und Android verbietet einer App eine andere App zu ändern. http://junit.sourceforge.net/javadoc/org/junit/runner/notification/RunListener.html
Beste Antwort Ihnen geht, wenn Sie mir eine der folgenden Aktionen automatisch aus Android Studio auslösen kann helfen:
- einen Zeilenbefehl ausführen
adb shell pm clear my.main.app.package
, - oder vorzugsweise meine gradle Aufgabe aufrufen
clearMainAppData
Ich bin auch ganz Ohr, wenn es eine Veränderung gibt nate Weg. Sicherlich sollte es bei der Automatisierung von Geräteprüfungen einen klaren Weg geben, um Anwendungsdaten zu löschen.
Vielen Dank!
Es gibt keine Antworten, also denke ich, dass die meisten Leute einfach auf die Installation der App als Initialisierungsprozess verlassen. –
@ razzle-shazi hat Nsimons Lösung für Sie arbeiten? –