Android Studio — clear-Anwendung Daten für Test-Instrumentierung

Wie bekomme ich Android Studio (AndroidJunitRunner) zum löschen von Anwendungsdaten, die vor einem instrumentation test ohne manuell ausgeführt adb Befehl?

Entdeckte ich, dass android.support.test.runner.AndroidJUnitRunner Art von cheats-es eigentlich nie ruft connectedCheck oder connectedAndroidTest.

  1. Wenn von der Kommandozeile aus ausgeführt $ gradle connectedCheck

    :MyMainApp:assembleDebug UP-TO-DATE
    :MyMainApp:assembleDebugTest UP-TO-DATE
    :MyMainApp:clearMainAppData
    :MyMainApp:connectedCheck
    
  2. Wenn Sie von innerhalb der IDE, indem Sie die Instrumentierung, die test-Konfiguration (grüne Android-Roboter-logo mit rot/grüne Pfeile)

    **Executing tasks: [:MyMainAppApp:assembleDebug, :MyMainAppApp:assembleDebugTest]**
    

    Wie Sie sehen können, die letzten gradle Ziel ist assembleDebugTest

Habe ich einen Haken auf connectedCheck im build.gradle löschen der Daten von der Haupt-app vor dem Start der instrumentation test.

//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)
    }
}

Ich erkennen, dass alternativ könnte ich implementieren eine 'Daten löschen' - button in der Haupt-app und der Instrumentierung-app klicken Sie sich durch die UI, aber ich finde, die Lösung ist unerwünscht.

Schaute ich AndroidJUnitRunner API und es gibt Haken, die über Runlistener - interface, aber die Haken sind im Rahmen der test-app, d.h. es läuft auf dem Gerät und Android verbietet eine app ändern, Sie eine andere app.
http://junit.sourceforge.net/javadoc/org/junit/runner/notification/RunListener.html

Beste Antwort geht zu Ihnen, wenn Sie mir helfen können, lösen Sie eine der folgenden Aktionen automatisch aus innerhalb von Android Studio:

  • ausführen einer Befehlszeile adb shell pm clear my.main.app.package,
  • oder noch besser, rufen meinen gradle task clearMainAppData

Ich bin auch ganz Ohr, wenn es einen alternativen Weg. Sicherlich mit device testing automation sollte es einen klaren Weg, um zu löschen application data?

Danke!

  • Es gibt keine Antworten, so dass ich denke, dass die meisten Menschen nur verlassen sich auf die Installation der app als die Initialisierung.
  • hast nsimons Lösung für Sie arbeiten?
InformationsquelleAutor Razzle Shazl | 2015-07-30
Schreibe einen Kommentar