AndroidX Test Espresso 3.1.1, Runner 1.1.1, Rules 1.1.1, Monitor 1.1.1, AndroidTestOrchestrator 1.1.1, Core 1.1.0, Truth 1.1.0, JUnit 1.1.0 (13.12.2018)
Dies ist die stabile Version von AndroidX Test 1.1.0.
- Core
- Unterstützung von Aktivitäten, die eine andere Aktivität starten, in ActivityScenario
AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01, Monitor 1.1.1-beta01, AndroidTestOrchestrator 1.1.1-beta01, Core 1.1.0-beta01, Truth 1.1.0-beta01, JUnit 1.1.0-beta01 (06.12.2018)
- Core
- Neues core-ktx-Kotlin-Erweiterungsartefakt Enthält eine kotlin-freundliche ActivityScenario.launchActivity API
- Neue ActivityScenario API zum Starten von Aktivitäten mit benutzerdefinierten Intents
- Neue ActivityScenario API zum Empfangen eines Aktivitätsergebnisses
- ActivityScenario schließbar machen
- Espresso
- Ändern Sie „withResourceNameMatcher“ und „HumanReadables“, damit sie mit API 28 kompatibel sind.
- Beschreibung von „ReplaceTextAction“ aktualisieren, um „stringToBeSet“ einzuschließen
- Unterstützung von Espresso im pausierten Looper-Modus von Robolectric.
- JUnit
- Neue ActivityScenarioRule API zum automatischen Starten und Schließen einer Aktivität beim Einrichten und Beenden von Tests
- Neues junit-ktx-Kotlin-Erweiterungsartefakt Enthält eine Kotlin-freundliche ActivityScenarioRule API
- Läufer
- Verhalten von „-e package“ und „-e testFile“ beim Empfangen von Paketen konsistent machen
- Richtig
- BundleSubject-APIs für bool, parcelable und parcelableAsType hinzufügen
AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0, AndroidTestOrchestrator 1.1.0, Core 1.0.0, Truth 1.0.0, JUnit 1.0.0 (24.10.2018)
- Alle
- Setzen Sie „minSdkVersion“ auf 14 und „targetSdkVersion“ auf 28.
- Espresso
- Fehlerbehebung: „withContentDescription“ funktioniert jetzt auch mit anderen Typen als String
- Unterstützung für die Verwendung von Espresso auf Robolectric hinzugefügt
- Problem 72798625: Espresso ViewMatchers.withText funktioniert nicht, wenn „textAllCaps“ aktiviert ist
- Unterstützung für das Einfügen einer Sequenz von Bewegungsereignissen hinzufügen
- Intents
- Beta-API zum Abrufen einer Liste von Intents hinzugefügt. Für die Verwendung mit neuen Wahrheitsbehauptungen vorgesehen
- Läufer
- Unterstützung für Instant-Apps hinzufügen
- androidx.test.runner.AndroidJUnit4 wird eingestellt und durch androidx.test.ext.junit.runners.AndroidJUnit4 ersetzt
- Überwachen
- androidx.test.InstrumentationRegistry wird eingestellt und durch androidx.test.platform.app.InstrumentationRegistry und androidx.test.core.app.ApplicationProvider ersetzt.
- AndroidTestOrchestrator
- Die Verarbeitung der Orchestrator-Abdeckung wird nur aktiviert, wenn sowohl die Argumente „coverage“ als auch „coverageFilePath“ übergeben werden.
- Warten Sie nur auf den Debugger, wenn „-debug“ festgelegt ist, aber nicht für die Auflistung von ATO-Testläufen. Es wurde ein neues orchestratorDebug-Flag zum Debuggen von Orchestrator selbst hinzugefügt.
- Core
- Neues Artefakt! Enthält neue APIs, die sowohl lokale als auch On-Device-Tests für Folgendes unterstützen:
- Kontext abrufen: ApplicationProvider
- Aktivitätslebenszyklen steuern: ActivityScenario(Beta)
- Builders für MotionEvent, PackageInfo
- Parceables-Dienstprogrammklasse
- Neues Artefakt! Enthält neue APIs, die sowohl lokale als auch On-Device-Tests für Folgendes unterstützen:
- Richtig
- Neues Artefakt! Enthält benutzerdefinierte Referenzdaten für Notification, Intent, Bundle, Parcelable und MotionEvent
- JUnit
- Neues Artefakt! Enthält die JUnit-Runner-Klasse androidx.test.ext.junit.runners.AndroidJUnit4, die sowohl lokale als auch On-Device-Tests unterstützt.
Espresso 3.0.2-beta1, Runner 1.0.2-beta1, Rules 1.0.2-beta1, Monitor 1.0.2-beta1, AndroidTestOrchestrator 1.0.2-beta1 (16.04.2018)
- Espresso
- Breaking API Change:
- Im Problem 64062890 wurde uns mitgeteilt, dass wir Guava Optional in unserer öffentlichen API verwenden. Das war ein schreckliches Versäumnis unsererseits . Aus diesem Grund gibt es in dieser Version eine schwerwiegende Änderung der öffentlichen API, um dieses Problem zu beheben. Wir haben einen unschönen Wrapper für die Guava Optional-Klasse eingeführt, der den Namen EspressoOptional trägt und sich im Namespace „android.support.test.espresso.util“ befindet. Entwickler, die die geleakte Guava Optional API verwendet haben, müssen ihre Importe und Verweise ändern, um EspressoOptional zu verwenden, wenn sie auf diese neue Version aktualisieren. Wir entschuldigen uns für eventuelle Unannehmlichkeiten.
- Die APIs „onView()“ und „onData()“ sind jetzt mit „@CheckReturnValue“ gekennzeichnet, um Fehler zu vermeiden.
- Die POM-Datei für espresso-core wurde korrigiert, sodass die Abhängigkeit „rules“ nicht abgerufen wird. Stattdessen wird sie von der POM-Datei für espresso-intents abgerufen. Für Entwickler sollte dies keine Änderung sein, da „espresso-intents“ nicht ohne „espresso-core“ verwendet werden kann.
- Problem 65486414: In Espresso fehlt die Guava-Abhängigkeit
- Problem 65576174: „Espresso IdlingResourceRegistry.sync“ führt dazu, dass der zweite Test fehlschlägt
- Problem 65568629: „Espresso.onIdle“ verwendet „IdlingRegistry“ nicht
- Problem 69333598: espresso 3.0.1 ist in Android-Bibliotheksmodul nicht mit play-services-auth:11.6.0 kompatibel.
- Problem 64062890: Interner optionaler Typ, der von der AdapterViewProtocol-Schnittstelle bereitgestellt wird
- Problem 64091847: Espresso 3.0.0 sollte NICHT vom Testrunner abhängig sein
- Problem 73722050: espresso-contrib 3.0.2-alpha1-Pakete android.arch.{lifecycle/core}-Klassen
- Breaking API Change:
- Espresso-remote
- Das ist ein brandneues Artefakt. Wir haben alle Funktionen von Espresso für mehrere Prozesse außerhalb des espresso-core-Artefakts entkoppelt. Das ist übersichtlicher und sollte die Gesamtgröße und die Anzahl der Methoden von Espresso-Core erheblich reduzieren.
- Läufer
- Kürze den Stacktrace, wenn er für eine Binder-Transaktion zu groß ist. Da AJUR Fehler über einen Binder-IPC an AM zurückmelden muss, dürfen wir das Binder-Transaktionslimit nicht überschreiten, das 1 MB pro Prozess beträgt.
- Problem 65828576: TestRequestBuilder stürzt ab, wenn ein Test in einer Klasse mit @Ignore ausgeführt wird
- Problem 37057596: Fehler in @BeforeClass werden nicht behandelt
- Regeln
- Geben Sie nach Änderungen am Lebenszyklus eine Referenz für die zu testende Aktivität frei. Während des Tests kann die Aktivität jetzt direkt über die mit #getActivity() abgerufene Referenz manipuliert werden. Wenn die Aktivität beendet und neu gestartet wird, verweist die von #getActivity() zurückgegebene Referenz immer auf die aktuelle Instanz der Aktivität.
- Problem 64389280: GrantPermissionRule bietet WRITE_EXTERNAL_STORAGE nicht
- Problem 37065965: ActivityTestRule gibt Aktivität nach Änderung der Ausrichtung weiter
- Problem 75254050: ActivityTestRule aktualisiert die Activity-Instanz bei Konfigurationsänderungen nicht
- Problem 64464625: UI-Arbeiten können nicht in der Methode „finish()“ der Aktivität ausgeführt werden
- AndroidTestOrchestrator
- Übergeben Sie
-e coverage true -e coverageFilePath /sdcard/foo/-Flags, um Abdeckungsdateien am angegebenen Speicherort zu generieren. Die App muss die Berechtigung haben, an den angegebenen Speicherort zu schreiben. Die Namenskonvention für die Abdeckungsdatei sieht jetzt so aus:com.foo.Class#method1.ec. Hinweis: Dies wird nur im isolierten Modus unterstützt. Außerdem kann es nicht zusammen mit demcoverageFile-Flag von AndroidJUnitRunner verwendet werden. Da die generierten Abdeckungsdateien sich gegenseitig überschreiben. - Übergeben Sie das Flag
-e clearPackageData, wenn der Orchestrator die Befehlepm clear context.getPackageName()undpm clear targetContext.getPackageName()zwischen den Testaufrufen ausführen soll. Der Kontext im Befehl „clear“ ist der Kontext der zu testenden App. - Behoben: Wenn ein leerer Test ausgeführt wird, d. h. kein @Test im Ziel vorhanden ist, unterscheidet sich das Testergebnis vom Legacy-Modus.
- Problem 72758547: Test Orchestrator führt dazu, dass die Jacoco-Abdeckungsdaten unvollständig sind und nur Daten des letzten Testlaufs enthalten
- Problem 67916042: Android Test Orchestrator : Ausführung aufgrund von Prozessabsturz wegen „OutOfMemory“ beendet
- Problem 77752735: Orchestrator stürzt aufgrund von „TransactionTooLargeException“ ab
- Problem 77549481: Test Orchestrator sollte nach jedem Test „pm clear“ ausführen
- Übergeben Sie
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05.12.2017)
Espresso
Intentshat jetzt eine aufrufbare Antwort, sodass Tests nach dem Erfassen eines ausgelösten Intents, aber vor der Rückgabe einesInstrumentation.ActivityResult-Objekts ausgeführt werden können.
Runner
Aufteilen des Maven-Artefakts für den Monitor
com.android.support.test:monitor:<version>für Nutzer, dieMonitoringInstrumentationohne Testausführung und JUnit-Funktionen benötigen.Wenn Sie
com.android.support.test:runner:<version>verwenden, funktioniert alles wie erwartet, da Gradle dasmonitor-Modul automatisch als Abhängigkeit desrunner-Moduls abruft.Flag
newRunListenerOrderModehinzugefügt. Wenntrue, werden benutzerdefinierte Listener vor Standard-Listenern ausgeführt. Wir gehen davon aus, dass dieses Verhalten irgendwann zum Standard wird.Problem 65828576:
TestRequestBuilderstürzt ab, wenn Tests in einer mit@Ignoreannotierten Klasse ausgeführt werden (eigenständig ohne Testausführung oder JUnit-Funktionen).
AndroidTestOrchestrator
- Leere Tests werden jetzt genauso behandelt wie nicht orchestrierte
AndroidJUnitRunner. - Orchestrator kann jetzt sehr große Standardausgaben von
AndroidJUnitRunnerverarbeiten.
- Leere Tests werden jetzt genauso behandelt wie nicht orchestrierte
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28.08.2017)
Espresso
- Die Option
IdlingPolicywurde hinzugefügt, umonTimeout()zu unterdrücken, wenn ein Step-Debugger an die VM angehängt ist. - Probleme 64024656, 64247586 und 64525881: Melden Sie keine Fehler für das fehlgeschlagene Laden von Klassen, es sei denn, ein Nutzer lädt bestimmte Klassen, indem er das Klassenrunner-Argument
-eeinfügt. - Problem 64877246: Fehlende Klassen zur JAR-Datei für Quellen hinzufügen.
- Die Option
Runner
- Vereinfachte
ShardingFilter-Logik. - Problem 65025743: Der
@RequiresDevice-Filter unterstützt jetzt FTL-Emulatoren.
- Vereinfachte
AndroidTestOrchestrator
- Doppelte Berichtsfehler vermeiden Wenn ein Testprozess nach einem Fehler abstürzt, wird jetzt nur noch ein Fehler für den Test gemeldet.
- Die Javadoc-Dokumentation für Orchestrator wurde korrigiert.
- Tests werden jetzt als verpasst angezeigt, wenn der Remote-Prozess abstürzt.
- Ignorierte Testläufe werden jetzt berücksichtigt.
- Ignorierte Testläufe werden jetzt aus der Fußzeile ausgeschlossen, um den alten Ergebnissen zu entsprechen.
- Probleme mit Laufzeitberechtigungen behoben. Testberichte werden jetzt auf Geräten mit Android 7.0 (API-Level 24) und höher auf die SD-Karte geschrieben.
Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25.07.2017, Ankündigung)
Nicht abwärtskompatible Änderungen
- Alle Artefakte
- Unterstützung für API-Levels unter 15 wird eingestellt. Die SDK-Mindestversion verweist jedoch weiterhin auf API-Level 9, damit Nutzer Zeit für ein Upgrade haben.
- Espresso
- Die verworfene Klasse
android.support.test.espresso.contrib.CountingIdlingResourcewurde gelöscht und inandroid.support.test.espresso.idling.CountingIdlingResourceverschoben.- Verwenden Sie
getInstance().register()anstelle vonregisterIdlingResources()
- Verwenden Sie
- Guava wurde jetzt in einen anderen „internen“ Namespace verschoben. Wenn Sie versehentlich die Guava-API über Espresso-Namespaces verwenden, kann es zu Problemen kommen.
- Entfernen Sie alle Verweise auf die verschleierte Guava-Version (
.core.deps.guava.). - Support Library auf Version 25.4.0 oder höher aktualisieren
- Entfernen Sie alle Verweise auf die verschleierte Guava-Version (
- Die verworfene Klasse
Bekannte Probleme
- AndroidTestOrchestrator
- Die Runner-Argumente
-e numShardsund-e shardIndexwerden derzeit nicht unterstützt. - Parametrisierte Tests werden derzeit nicht unterstützt.
- Die Runner-Argumente
Neue Funktionen
- Espresso
- Neue Multiprocess Espresso-Unterstützung auf API 26 für
espresso-coreundespresso-web, aber nicht fürespresso-contrib - Neue schlanke
IdlingRegistryAPI- Veröffentlicht als Teil von
com.android.support.test.espresso:espresso-idling-resource:3.0.0 - Eingestellte Methoden:
- Veröffentlicht als Teil von
- Neue API zur Synchronisierung mit
Executors- Neues Maven-Artefakt:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - Enthält die Klassen
IdlingScheduledThreadPoolExecutorundIdlingThreadPoolExecutor
- Neues Maven-Artefakt:
- Neue API zur Synchronisierung mit Netzwerkanfragen und ‑antworten.
- Neues Maven-Artefakt:
com.android.support.test.espresso.idling:idling-net:3.0.0 - Enthält die Klasse
UriIdlingResource
- Neues Maven-Artefakt:
- Neue
espresso-core-View-Matcher:hasBackground()entspricht der Hintergrund-Drawable-Ressource einesView-ObjektshasTextColor()wird mit der Farbe einesTextView-Objekts verglichen.
- Neue Methoden für Ansichtsaktionen:
- Die Ansichtsaktion
scrollTo()wurde verbessert, sodass sie mit untergeordneten Elementen vonListViewfunktioniert. repeatedlyUntil()– Führt die angegebeneViewActionfür eine Ansicht aus, bis die Ansicht der gewünschtenViewMatchersentspricht.
- Die Ansichtsaktion
- Neue Espresso-Methoden:
pressBackUnconditionally(): Ähnlich wiepressBack(), löst aber keine Ausnahme aus, wenn Espresso navigiert.noActivity()– Macht das Warten auf eine Aktivität vor dem Ausführen einesViewActionoderViewAssertionüberflüssig.onIdle(): Der Hauptthread wird in einer Schleife ausgeführt, bis die App inaktiv wird.onIdle(Callable<T>): WieonIdle(), aber mit einem zusätzlichenCallableals Parameter, der ausgeführt wird, nachdem die App in den Leerlauf wechselt
webScrollIntoView()– Neuesespresso-web-Atom, mit dem Sie in einemWebViewscrollen können
- Neue Multiprocess Espresso-Unterstützung auf API 26 für
- Läufer
-
InterceptingActivityFactoryundSingleActivityFactory: Ermöglicht das Testen einer Aktivität isoliert von der Außenwelt, indem Methoden wiestartService()undsendBroadcast()überschrieben werden. -
Unterstützung für die Verwendung von JUnitParams mit
AndroidJUnitRunnerhinzufügen -
@UiThreadTestauf der Ebene des Core-Test-Runners verarbeiten und@UiThreadTestRuleeinstellen – Dadurch kann die Annotation@UiThreadTestdirekt für Methoden verwendet werden, die mit@Beforeund@Afterannotiert sind. -
@SdkSupress-Hinweis unterstützt jetztmaxSdkVersion-Wert (Problem 37067792) -
-e classLoader– Die Möglichkeit bieten, Klassenlader über Runner-Argumente zu übergeben -
-e filter– Unterstützung für benutzerdefinierte JUnit-Filter hinzufügen, die mit Runner-Argumenten angegeben werden können -
-e runnerBuilder– Ermöglicht Entwicklern, eigene Implementierungen vonRunnerBuilderbereitzustellen, mit denen bestimmt werden kann, ob und wie sie für eine bestimmte Klasse ausgeführt werden können.
-
- Regeln
ProviderTestRule– Neue API zum Testen vonContentProvider-ObjektengetActivityResult()undActivityResultMatchers– Neue API zum Abrufen des Aktivitätsergebnisses einer Aktivität, diesetResult()aufgerufen hat
- AndroidTestOrchestrator
- Android Test Orchestrator bietet eine neue Möglichkeit zum Erfassen und Ausführen von Tests, wobei der Schwerpunkt auf Korrektheit und Isolation liegt. Orchestrator ist ein unabhängiger Instrumentierungsprozess, der für jeden Test einen Instrumentierungs-Runner-Prozess startet und die Ergebnisse erfasst.
- Anwendungsabstürze beenden die Runner-Instrumentierung, aber nicht den Orchestrator, sodass Ihre Testsuite fortgesetzt werden kann.
- Erfordert die Installation der Orchestrator-APK –
'com.android.support.test:orchestrator:1.0.0' - Version 1.0 hat nur eine Befehlszeilenschnittstelle. Die Integration in Android Studio und Firebase Test Lab ist geplant.
- Android Test Orchestrator bietet eine neue Möglichkeit zum Erfassen und Ausführen von Tests, wobei der Schwerpunkt auf Korrektheit und Isolation liegt. Orchestrator ist ein unabhängiger Instrumentierungsprozess, der für jeden Test einen Instrumentierungs-Runner-Prozess startet und die Ergebnisse erfasst.
Fehlerkorrekturen
- Espresso
- Die Synchronisierung der Stammansicht wurde verbessert, um die Instabilität deutlich zu verringern.
- Beschädigung von
IdlingResourceRegistrybeheben - Bessere Synchronisierung mit
IdlingResource-Objekten - Problem 37132680: Espresso wartet nicht, bis die Dialogfelderstellung abgeschlossen ist, bevor die nächste Aktion ausgeführt wird
- Problem 37103280: Espresso sollte ProGuard-Consumer-Regeln bereitstellen, damit Nutzer sie nicht hinzufügen müssen
- Problem 37094726: Espresso-Intents enthalten unnötiges Anwendungslabels
- Problem 37093953: Espresso: Keine verfügbare Prüfung für Null-/Leer-Fehlertext
- Problem 37071776:
espresso-corebettet die.pom-Dateien von Guava ein - Problem 37062612: NPE in
release() - Problem 37063389: Kompilierung mit Guava und
espresso-webalsandroidTest-Abhängigkeiten nicht möglich - Problem 37070533: Unterstützung für
NavigationViewin der Android Design Support Library hinzufügen
- Läufer
-
Problem behoben:
@UiThreadTestkann jetzt in Kombination mit@Test(timeout = 123)verwendet werden. - Der Runner-Parameter
-e notClasswurde korrigiert. -e logwurde korrigiert, um JUnit3- und JUnit4-Testsuiten sowieParameterized- undEnclosed-Runner zu unterstützen.- Problem 37663530: Vor und nach jeder Testmethode auf den Abschluss aller Aktivitäten warten
- Problem 37132680: Espresso wartet nicht, bis das Dialogfeld erstellt wurde, bevor die nächste Aktion ausgeführt wird
-
Problem 37123213:
@RequiresDevicewird bei x86_64-ABI ignoriert -
Problem 37101485: Einige im Manifest angegebene Argumente für
AndroidJUnitRunner, z. B. Testgröße, Annotation und Debugging, werden ignoriert - Problem 37082857: Die semiparallele Espresso-Testausführung schlägt bei statischen Objekten fehl
-
Problem 37063396: Kontext nicht mit
ProviderTestCase2initialisiert (verursachtNullPointerException)
-
Problem behoben:
- Regeln
- Der
ActivityTestRule-Lebenszyklus wurde korrigiert, um das Verhalten bei der regulären und der Lazy-Initialisierung vonActivityTestRulezu vereinheitlichen. - Problem 37079943: Fehler in
ServiceTestRulebehoben, damit die erneute Bindung möglich ist - Problem 37109342: Hinzufügen von
getActivityResult()undActivityResultMatchers
- Der
- UiAutomator
setUiAutomationFlags()zur Verwendung mitUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES– dadurch kannUiAutomatorverwendet werden, während andere Bedienungshilfen ausgeführt werden- Problem 37082813:
setText()für leereEditText-Objekte löstNullPointerExceptionaus, wenn das API-Level 19 oder niedriger ist
Weitere wichtige Änderungen
- Binärdateien werden jetzt über Google Maven veröffentlicht
- Reduzierte Größe der JAR-Dateien
espresso-coreundespresso-web– eingebettete Abhängigkeiten werden jetzt mit ProGuard reduziert - Alle
.aar-Dateien enthalten jetzt ProGuard-Regeln proguard_library.cfg-Dateien zu veröffentlichten Artefakten hinzufügen- Die
Tapper-Schnittstelle hat eine neue Version vonsendTap(), die implementiert werden muss.
Externe Beiträge
- Espresso
- Läufer
- Regeln
Espresso 2.2.2, Runner/Rules 0.5 (22.02.2016, stille Veröffentlichung)
Neue Funktionen
- espresso
- Problem 194253: Unterstützung für NavigationView in der Android Support Design Library hinzufügen
- Es wurden Prüfungen für aktivierte Animationen und Übergänge hinzugefügt.
- Neue
ViewMatcherAPI:withResourceName()
Fehlerkorrekturen
- espresso
- Problem 195331: In espresso-core sind die POM-Dateien von Guava eingebettet
- Zählen von inaktiven Ressourcen aus espresso-contrib entfernt
- Regeln
- Problem 187249: NPE in
Intents.release()
- Problem 187249: NPE in
- Runner
- Problem 196066: Das Argument
-e log trueinAndroidJUnitRunnerumgeht den tatsächlichen Test nicht - Auf Debugger in
onCreate()des Runners warten - Alle unterstützten Testanmerkungen wurden von der Plattform in ATSL verschoben.
- Stacktrace-Dump zu fehlender JSBridge entfernt
- Behoben
AndroidAnnotatedBuilder
- Problem 196066: Das Argument
Weitere wichtige Änderungen
ActivityTestRule,UiThreadTestRule,IntentsTestRuleundServiceTestRulesind nicht mehr in der Betaphase.- Datei mit Codeformatierungseinstellungen für einheitliche Codeformatierung hinzufügen
Espresso 2.2.1, Runner/Rules 0.4 (15.09.2015)
Neue Funktionen
- Regeln
- Neuer
IntentsTestRule-Konstruktor hinzugefügt, um vollständige Kompatibilität mitActivityTestRulezu gewährleisten
- Neuer
- Runner
- Sonderfall für die Multidex-Installation für API-Level 15 und niedriger hinzugefügt
- Ausschlussfilter für Klasse und Paket hinzugefügt:
- Alle Tests mit Ausnahme der Tests in einer bestimmten Klasse ausführen:
adb shell am instrument -w -e notClass com.android.foo.FooTest - Alle Tests außer einem einzelnen Test ausführen:
adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo - Alle Tests mit Ausnahme eines bestimmten Pakets ausführen:
adb shell am instrument -w -e notPackage com.android.foo.bar
- Alle Tests mit Ausnahme der Tests in einer bestimmten Klasse ausführen:
Externe Beiträge
- espresso
- 157911: View-Matcher für den Eingabetyp in einem
EditText-Objekt hinzufügen - 157912: View-Matcher zum Abgleichen von Fehlertext für ein
EditText-Objekt hinzufügen - 150674: Unterstützung für Schubladen mit beliebiger Ausrichtung hinzufügen
DrawerActions - 150744:
DrawerActionsleckt nicht mehrparentListener - 153303: Schwerkraft bei den Prüfungen „Ist die Schublade geöffnet oder geschlossen?“ angegeben
- 157910:
DrawerLayout-Factories für Open- und Close-Aktionen hinzufügen
- 157911: View-Matcher für den Eingabetyp in einem
Fehlerkorrekturen
- espresso
ViewActions.closeSoftKeyboard()sorgt jetzt dafür, dass die Bildschirmtastatur vollständig ausgeblendet wird.- Synchronisierungsproblem mit der
Espresso.pressBack()-Methode von Espresso auf API-Level 21 und höher behoben - Die Synchronisierung für Tastaturschließanimationen auf API-Level 23 wurde korrigiert.
- Regeln
- Der Fehler
ServiceTestRuleauf API-Level 23 wurde behoben.startService()muss immer mit einem explizitenIntentaufgerufen werden.
- Der Fehler
- Läufer
- Fehlerhafte Unterstützung für Gradle
JaCoCobehoben - Unterstützung für Test-Sharding korrigiert
- Es wurde ein inkonsistenter Status im Test-Runner nach Zeitüberschreitungen bei
JUnit3-Stiltests behoben.
- Fehlerhafte Unterstützung für Gradle
Weitere wichtige Änderungen
- Javadoc-Korrekturen und verbesserte Fehlermeldungen
suite()-Methoden ignorieren und Initialisierungsfehler bei Verwendung von Methodenfiltern nicht ignorieren
Espresso 2.2 / ATSL 0.3 (2015-06-09)
Neue Funktionen
- espresso-web 2.2
- Neuer
WebView-Support
- Neuer
- espresso-core 2.2
- Migration auf Dagger v2
- Migration zur Verwendung von hamcrest v1.3
- espresso-contrib 2.2
- Prüfungen der Barrierefreiheit
DrawerActions-Schwerkraftunterstützung
- Regeln 0.3
DisableOnAndroidDebugRegel
- runner 0.3
- Upgrade von JUnit v4.10 auf JUnit v4.12
- Migration zur Verwendung von Hamcrest v1.3
Fehlerkorrekturen
DrawerActions-Leck behobenParentListener- Ein Verstoß gegen eine Annahme wird jetzt als „Ignore“-Test und nicht mehr als fehlgeschlagener Test behandelt.
- Es wurde ein Problem behoben, bei dem
MonitoringInstrumentationAktivitätsinstanzen überExecutorServiceweitergegeben hat. - Problem behoben: Aktivitäten ohne zugehöriges Gerät blieben im Status „Beendet“ hängen.
- Aktualisieren Sie
Until.scrollFinished(), damit „true“ zurückgegeben wird, wenn keine Scroll-Ereignisse generiert wurden. Schutz vor potenziellen NPEs inUiObject2#setText()
Espresso 2.1, Test Runner/Rules 0.2 und UIAutomator 2.1.0 (21.04.2015)
Nicht abwärtskompatible Änderungen
- Das Testrunner-Artefakt wurde in zwei Artefakte aufgeteilt und der Name wurde von
com.android.support.test:testing-support-lib:0.1incom.android.support.test:runner:0.2undcom.android.support.test:rules:0.2geändert.
Neue Funktionen
- espresso-intents: Eine Mockito-ähnliche API, die hermetische Interaktivitätstests ermöglicht, indem Testautoren ausgehende Intents prüfen und stummeln können.
IntentsTestRule: ErweitertActivityTestRule, initialisiert und gibt Espresso-Intents in funktionalen UI-Tests frei.
- espresso-core
ViewActions: Es ist jetzt möglich, globale Zusicherungen vor dem Ausführen von Aktionen auszuführen. Das ist nützlich für andere Frameworks, die auf Espresso aufbauen, um den Status der Ansichtshierarchie zu validieren, während die vorhandene Espresso-Testsuite ausgeführt wird.ViewMatchers.withContentDescription()resId-Überlastung
- Regeln
ActivityTestRule: Diese Regel ermöglicht Funktionstests für eine einzelne Aktivität.UiThreadRule- undUiThreadTest-Annotationen: Mit dieser Regel kann die mitUiThreadTestannotierte Testmethode im Hauptthread (oder UI-Thread) der Anwendung ausgeführt werden.ServiceTestRule: Diese Regel ermöglicht Funktionstests für einen Dienst.
- runner
ApplicationLifecycleCallback: Callback für die Überwachung von Anwendungslebenszyklusereignissen- Alle Runner-Argumente können jetzt auch in der Android-Manifestdatei mit einem
<meta-data>-Tag angegeben werden.
- UIAutomator
UiDevice.dumpWindowHierarchy()kann jetzt eineFileoder eineOutputStreamakzeptieren.
Fehlerkorrekturen
- espresso
- Der Cursor-Matcher gibt jetzt
falsezurück, wenn die Spalte nicht gefunden wurde, damit Hamcrest mit dem nächsten Cursor fortfahren kann. NullPointerExceptionmitPreferenceMatcherswithTitletritt nicht mehr auf- Wenn eine inaktive Ressource abgemeldet wird, geht Espresso nicht mehr davon aus, dass wir inaktive Ressourcen haben, die beschäftigt sind.
- Aktualisierte Version der Support Annotations, die von Espresso Contrib verwendet wird
- Der Cursor-Matcher gibt jetzt
- runner
- Bei
AndroidJUnit4werden Tests mit fehlerhaften Annahmen jetzt übersprungen.
- Bei
- UIAutomator
- Watchers ausführen, um
StaleObjectExceptionzu verhindern
- Watchers ausführen, um
Weitere wichtige Änderungen
- Bessere Fehlermeldung, wenn „typeText“ mit einem nicht lateinischen String nicht möglich ist
UIAutomator 2.0 (12.03.2015)
UI Automator basiert jetzt auf Android Instrumentation und Sie können Tests mit dem Befehl ./gradlew connectedCheck erstellen und ausführen.
Espresso Version 2.0, Test Runner 0.1 (veröffentlicht am: 2014-12-19)
Nicht abwärtskompatible Änderungen
- Espresso wurde in einen neuen Namespace verschoben, von
android.support.test.espressozuandroid.support.test.espresso - Espresso-Artefakte wurden umbenannt
espresso-1.1.jarheißt jetztespresso-core-release-2.0.jar- Die
IdlingResource-Schnittstelle wurde in eine separate Bibliothek verschoben:espresso-idling-resource-release-2.0.jar CountingIdlingResourcebefindet sich jetzt inespresso-contrib-release-2.0.jar(wie es immer hätte sein sollen).
- Die optionale Guava-Abhängigkeit wurde aus der öffentlichen API entfernt, um das Umpacken der Guava-Abhängigkeit zu unterstützen und DEX-Konflikte zu vermeiden, die eine große Quelle von Entwicklungsproblemen darstellen. Folgende Methoden sind betroffen:
ViewAssertion.check()HumanReadables.getViewHierarchyErrorMessage()
Neue Funktionen
- Aktionen
ViewActionsreplaceText()openLink()- Nach oben und unten wischen
- espresso-contrib
RecyclerViewActions: Verarbeitet Interaktionen mitRecyclerViewsPickerActions: Verarbeitet Interaktionen mitDate- undTime-Auswahlfeldern
- Matcher
RootMatchersisPlatformPopup()
ViewMatchersisJavascriptEnabled()withSpinnerText()withHint()isSelected()hasLinks()
LayoutMatchers: Matcher für i18n-bezogene LayouttestsCursorMatchers: Eine Sammlung von Matchern fürCursor-Objekte
- Behauptungen
PositionAssertions, einschließlichisLeftOf()undisAbove(): Sammlung vonViewAssertionszum Prüfen der relativen Position von Elementen auf dem BildschirmLayoutAssertions: Zusicherungen für i18n-bezogene Layouttests
- Test-App: Viele neue Beispielaktivitäten/Tests
- Sonstiges
Espresso.unregisterIdlingResources()undEspresso.getIdlingResources(): Bietet zusätzliche Flexibilität für die Arbeit mitIdlingResourcesViewInteraction.withFailureHandler(): Ermöglicht das Überschreiben des Fehler-Handlers vononView()onData()-Support fürAdapterViewsmitCursorAdapters
Fehlerkorrekturen
ViewMatchers.isDisplayed()entspricht Ansichten, die den gesamten Bildschirm einnehmen, aber nicht mehr zu weniger als 90% angezeigt werden.- Wenn Sie den Call-to-Action für die Wischaktion aufrufen, wird nicht mehr
IdlingResourceTimeoutExceptionangezeigt.DrawerActions.openDrawer()
Weitere wichtige Änderungen
- Umstellung von Maven auf Gradle
- Espresso-Abhängigkeiten (Guava, Dagger, Hamcrest) wurden verschoben, um DEX-Konflikte zu vermeiden.
- Die Registrierung und Deregistrierung von Leerlaufressourcen gibt jetzt Erfolg oder Misserfolg zurück.
- Lollipop-Unterstützung: Platzieren Sie
message.recycle()hinter einer Schnittstelle, um versionsbezogene Änderungen zu berücksichtigen. - SDK-Zielversion auf 21 umgestellt – betrifft hauptsächlich die Test-App
Version 1.1 (veröffentlicht am: 2014-01-08)
Espresso
- Neue
swipeLeftundswipeRightViewActions - Unterstützung für Mehrfenstermodus: Eine erweiterte Funktion, mit der das Zielfenster ausgewählt werden kann, in dem Espresso den Vorgang ausführen soll.
- Verbesserungen bei
TypeTextAction: Text kann in eine bereits fokussierte Ansicht eingegeben werden, was das Anhängen von Text erleichtert. - Zahlreiche Fehlerkorrekturen
Espresso Contrib-Bibliothek
- Diese neue Bibliothek enthält Funktionen, die Espresso ergänzen, aber nicht Teil der Kernbibliothek sind.
- Neue
DrawerActionsfür den Betrieb aufDrawerLayout: Hat eine Abhängigkeit von der Android Support Library, daher wird sie außerhalb der Espresso-Kernbibliothek beibehalten.
Beispieltests
- Diese Tests wurden in dasselbe Paket wie die Test-App verschoben.
- Die Maven-POMs wurden korrigiert, um doppelte Guava-Abhängigkeiten zu entfernen.
mvn installsollte jetzt funktionieren.