2017-12-27 9 views
1

Von the docsAndroid Firebase Test Lab - Instrumentierung Tests mit Orchestrator, was ist der Zweck?

Neu: Instrumentierung Tests mit Orchestrator Android-Test Orchestrator unabhängig voneinander bei jedem Ihrer App Instrumentierung Tests ausführt, die mehrere Vorteile, aber auch einen Nachteil:

Vorteile

nicht doppelt benutzt state: Jeder Test wird in seiner eigenen Instrumentierungsinstanz ausgeführt, sodass sich der gemeinsame Status nicht über Tests anhäuft.

Isolieren Abstürze: Wenn der Test abstürzt, dauert es nur nach unten seine eigenen Instanz Instrumentation, so dass die anderen Prüfungen in der Suite noch laufen.

Drawback

Längere Laufzeit: Jeder Test seine eigene Instrumentation Instanz Lauf bedeutet, dass der Testprozess insgesamt etwas länger dauert. Die erhöhte Laufzeit kann sich auf die Nutzung oder Nutzung der Kontingente auswirken und kann dazu führen, dass Sie die Zeitlimits für Geräte erreichen.

Jetzt empfiehlt es, den neuen Orchestrator lokal auszuführen, um sicherzustellen, dass er funktioniert. so lief ich es nach testOptions meiner Moduls build.gradle Datei hinzufügen:

testOptions { 
     execution 'ANDROID_TEST_ORCHESTRATOR' 
    } 

mit gradle Abhängigkeiten:

androidTestImplementation 'com.android.support.test:runner:1.0.1' 
     androidTestUtil 'com.android.support.test:orchestrator:1.0.1' 

aber ich sehe keinen Unterschied, wenn dabei ./gradlew connectedCheck

Ich habe versucht, ein physikalisches Gerät einstecken und gleichzeitig den Emulator api 26 ausführen. Also hätte ich jetzt zwei Geräte an adb angeschlossen. Ausführen von ./gradlew connectedCheck. Ich sehe die folgende Ausgabe in der Konsole Terminal:

#./gradlew connectedCheck     
Parallel execution with configuration on demand is an incubating feature. 
> Configure project :app 
Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead. 
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. 
     at build_495ocpxnm4a4fvowoj4qizq7q.run(/Users/me/Development/QA/android/MyApp/app/build.gradle:303) 
     (Run with --stacktrace to get the full stack trace of this deprecation warning.) 
The CompileOptions.bootClasspath property has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the CompileOptions.bootstrapClasspath property instead. 
[newrelic.info] Android Gradle plugin version 3.+ detected. Using transform API 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) 
> Task :app:processLabsDebugGoogleServices 
Parsing json file: /Users/me/Development/QA/android/Myapp/app/google-services.json 
Starting 39 tests on Nexus_6P_API_26_oreo_xxhdpi(AVD) - 8.0.0 
Starting 39 tests on SM-G610F - 7.0 
<====---------> 33% EXECUTING [4m 40s] 

es wurde der Test auf beiden Geräten ausgeführt. ist das was Orchestrator tut?

Was ist der Zweck des Orchestrators?

+0

Haben Sie alle anderen Abhängigkeiten wie 'com.android.support.test: orchestrator: 1.0.1' hinzugefügt? Lesen Sie [hier] (https://developer.android.com/training/testing/junit-runner.html#ato-gradle) und [hier] (https://developer.android.com/topic/libraries/testing- support-library/packages.html) – MatPag

+0

ja. Ich werde die Frage aktualisieren. – j2emanue

Antwort

1

Android Test Orchestrator stellt sicher, dass jeder Ihrer Tests in einer isolierten Umgebung ausgeführt wird. Dies bedeutet, dass die Ergebnisse eines früheren Tests das Ergebnis zukünftiger Tests weniger wahrscheinlich beeinflussen (aufgrund des gemeinsamen Zustands).

Read more auf dem Android Developers Blog und auf this question.

+0

ich sehe. Jeder Test gibt einen neuen Prozess aus. Ich denke, es hilft nur mit Stabilität. Danke, dass Sie mich auf die Antwort hingewiesen haben. – j2emanue

Verwandte Themen