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 des AndroidX-Tests 1.1.0
- Kern
- Machen Sie das Aktivitätsszenario zu unterstützenden Aktivitäten, die eine andere Aktivität starten.
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 Truth 1.1.0-1801, JUnit 1801, JUnit 1801
- Kern
- Neues Artefakt für Core-KTX-Kotlin-Erweiterung! Enthält eine Kotlin-freundliche ActivitySzenario.launchActivity API
- Neue ActivitySzenario API zum Starten von Aktivitäten mit benutzerdefinierten Intents
- Neue ActivitySzenario API zum Empfang eines Aktivitätsergebnisses
- Aktivitätsszenario schließen lassen
- Espresso
- Ändern Sie withResourceNameMatcher und HumanReadables so, dass sie mit API 28 kompatibel sind.
- Beschreibung von „ReplaceTextAction“ mit „stringToBeSet“ aktualisieren
- Unterstütze Espresso im pausierten Looper-Modus von Robolectric.
- JUnit
- Neue ActivitySzenarioRule API zum automatischen Starten und Schließen einer Aktivität beim Einrichten und Teardown von Tests
- Neues junit-ktx-Kotlin-Erweiterungsartefakt! Beinhaltet eine für Kotlin geeignete ActivitySzenarioRule API
- Läufer
- Das Verhalten von „-e package“ und „-e testFile“ beim Empfang von Paketen einheitlich gestalten
- Richtig
- bool, parcelable und parcelableAsType BundleSubject APIs 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
- „minSdkVersion“ auf „14“ und „targetSdkVersion“ auf „28“ festlegen
- Espresso
- "withContentDescription" korrigiert, damit es auch mit Typen ohne Strings funktioniert
- Unterstützung für die Nutzung von Espresso auf Robolectric
- Problem 72798625: Espresso ViewMatchers.withText funktioniert nicht, wenn „textAllCaps“ aktiviert ist
- Unterstützung für das Injizieren einer Abfolge von Bewegungsereignissen hinzufügen
- Intents
- Beta-API zum Abrufen der Liste von Intents hinzufügen. Ist für die Verwendung mit neuen Wahrheitsbestätigungen vorgesehen.
- Läufer
- Unterstützung für Instant-Apps hinzufügen
- androidx.test.runner.AndroidJUnit4 verwerfen und durch androidx.test.ext.junit.runners.AndroidJUnit4 ersetzen
- Beobachten
- androidx.test.InstrumentationRegistry einstellen und durch androidx.test.platform.app.InstrumentationRegistry und androidx.test.core.app.ApplicationProvider ersetzen
- AndroidTestOrchestrator
- Aktivieren Sie die Verarbeitung der Orchestrator-Abdeckung nur, wenn sowohl die Argumente „coverage“ als auch „coverageFilePath“ übergeben werden.
- Nur auf Debugger warten, wenn „-debug“ festgelegt ist, aber nicht auf das Auflisten von ATO-Testfällen. Ein neues OrchestratorDebug-Flag wurde zum Debugging des Orchestrators selbst hinzugefügt.
- Kern
- Neues Artefakt! Umfasst neue APIs, die lokale und On-Device-Tests für Folgendes unterstützen:
- Kontext abrufen: ApplicationProvider
- Aktivitätslebenszyklen steuern: ActivitySzenario(Beta)
- Builder für MotionEvent, PackageInfo
- Parceables-Dienstprogrammklasse
- Neues Artefakt! Umfasst neue APIs, die lokale und On-Device-Tests für Folgendes unterstützen:
- Richtig
- Neues Artefakt! Umfasst benutzerdefinierte Truth-Themen für Benachrichtigungen, Intents, Sets, Parcelables und MotionEvent
- JUnit
- Neues Artefakt! Umfasst 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
- Wichtige API-Änderung:
- Wir wurden in Problem 64062890 darauf hingewiesen, dass wir Guava Optional in unserer öffentlichen API verwenden. Das war ein furchtbares Versäumnis von uns . Daher wurde in dieser Version eine funktionsgefährdende Änderung an der öffentlichen API vorgenommen, um dieses Problem zu beheben. Wir haben einen Ugly-Wrapper um die Klasse Guava Optional eingeführt, namens „EspressoOptional“, der sich unter dem Namespace „android.support.test.espresso.util“ befindet. Entwickler, die die gehackte Guava Optional API genutzt haben, müssen ihre Importe und Referenzen ändern, um während des Updates auf diese neue Version EspressoOptional zu verwenden. Wir entschuldigen uns für eventuelle Unannehmlichkeiten.
- APIs „onView()“ und „onData()“ sind jetzt als @CheckReturnValue gekennzeichnet, um Fehler zu vermeiden
- Es wurde korrigiert, dass die Espresso-Core-POM-Datei die "rules"-Abhängigkeit nicht per Espresso-Intents per POM abrufen konnte. Dies sollte eine NoOp-Änderung für Entwickler sein, da Espresso-Intents nicht ohne Espresso-Core verwendet werden können.
- Problem 65486414: Espresso fehlt Guave-Abhängigkeit
- Problem 65576174: Espresso IdlingResourceRegistry.sync schlägt fehl beim zweiten Test
- Problem 65568629: Espresso.onIdle verwendet IdlingRegistry nicht
- Problem 69333598: Espresso 3.0.1, nicht kompatibel mit play-services-auth:11.6.0 im Android-Bibliotheksmodul.
- Problem 64062890: Interner optionaler Typ, der über die AdapterViewProtocol-Schnittstelle verfügbar gemacht wird
- Problem 64091847: Espresso 3.0.0 sollte NICHT vom Test-Runner abhängen
- Problem 73722050: Espresso-contrib 3.0.2-alpha1-Pakete android.arch.{lifecycle/core}-Klassen
- Wichtige API-Änderung:
- Espresso-Fernbedienung
- Das ist ein brandneues Artefakt. Wir haben alle Multiprozessfunktionen von Espresso außerhalb des Espresso-Core-Artefakts entkoppelt. Dies ist sauberer und sollte die Gesamtgröße und Anzahl der Methoden des Espressokerns erheblich reduzieren.
- Läufer
- Kürzen Sie den Stacktrace, wenn er zu groß für eine Binder-Transaktion ist. Da AJUR Fehler über einen Binder-IPC an AM melden muss, müssen wir darauf achten, dass wir das Transaktionslimit von Binder (1 MB pro Prozess) nicht überschreiten.
- Problem 65828576: TestRequestBuilder stürzt beim Ausführen eines Tests in Klasse mit @ignore ab
- Problem 37057596: Fehler in @BeforeClass werden nicht behoben.
- Regeln
- Achten Sie darauf, nach Lebenszyklusänderungen eine Referenz zu der zu testenden Aktivität freizugeben. Während des Tests kann nun die Aktivität direkt mit dem Verweis von #getActivity() bearbeitet werden. Wenn die Aktivität beendet und neu gestartet wurde, verweist der von #getActivity() zurückgegebene Verweis jetzt immer auf die aktuelle Instanz der Aktivität.
- Problem 64389280: GrantPermissionRule bietet WRITE_EXTERNAL_STORAGE nicht
- Problem 37065965: ActivityTestRule gibt nach einer Ausrichtungsänderung einen Datenverlust durch.
- Problem 75254050: ActivityTestRule aktualisiert die Activity-Instanz während der Konfigurationsänderungen nicht
- Problem 64464625: UI-Arbeit mit der Methode „Finish()“ der Aktivität kann nicht ausgeführt werden
- AndroidTestOrchestrator
- Übergeben Sie
-e coverage true -e coverageFilePath /sdcard/foo/
-Flags, um Abdeckungsdateien am angegebenen Speicherort zu generieren. Die App muss dazu die Berechtigung zum Schreiben in den angegebenen Speicherort haben. 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 sich die generierten Abdeckungsdateien gegenseitig überschreiben. - Übergeben Sie das Flag
-e clearPackageData
, wenn der Orchestratorpm clear context.getPackageName()
- undpm clear targetContext.getPackageName()
-Befehle zwischen Testaufrufen ausführen soll. Beachten Sie, dass der Kontext im Befehl „clear“ die App im Testkontext ist. - Behoben: Wenn ein leerer Test, d. h. kein @Test innerhalb des Ziels, ausgeführt wird, weicht das Testergebnis vom Legacy-Modus ab.
- Problem 72758547: Test Orchestrator führt dazu, dass die Jacoco-Abdeckungsdaten unvollständig sind; enthält nur Daten des letzten Testlaufs
- Problem 67916042: Android Test Orchestrator : Ausführung bei Prozessabsturz aufgrund von unzureichendem Arbeitsspeicher gestoppt
- Problem 77752735: Orchestrator stürzt bei 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, Regeln 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05.12.2017)
Espresso
Intents
hat jetzt eine aufrufbare Antwort, mit der Tests nach dem Erfassen eines ausgelösten Intents, aber vor der Rückgabe einesInstrumentation.ActivityResult
-Objekts ausgeführt werden können.
Läufer
Teilen Sie das Monitoring-Maven-Artefakt
com.android.support.test:monitor:<version>
für Nutzer auf, dieMonitoringInstrumentation
ohne Testausführung und JUnit-Features benötigen.Wenn Sie
com.android.support.test:runner:<version>
verwenden, funktioniert alles wie erwartet, da Gradle das Modulmonitor
automatisch als Abhängigkeit des Modulsrunner
abruft.Flag
newRunListenerOrderMode
hinzugefügt. Beitrue
werden benutzerdefinierte Listener vor Standard-Listenern ausgeführt. Wir gehen davon aus, dass dieses Verhalten irgendwann zum Standard werden wird.Problem 65828576:
TestRequestBuilder
stürzt beim Ausführen von Tests in einer mit@Ignore
annotierten Klasse ab (eigenständig ohne Testausführung oder JUnit-Features).
AndroidTestOrchestrator
- werden leere Tests jetzt auf dieselbe Weise verarbeitet wie nicht orchestrierte
AndroidJUnitRunner
. - Orchestrator kann jetzt eine sehr große Standardausgabe von
AndroidJUnitRunner
verarbeiten.
- werden leere Tests jetzt auf dieselbe Weise verarbeitet wie nicht orchestrierte
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28.08.2017)
Espresso
- Eine
IdlingPolicy
-Option wurde hinzugefügt, umonTimeout()
zu unterdrücken, wenn der VM ein Schritt-Debugger hinzugefügt ist. - Probleme 64024656, 64247586 und 64525881: Es werden nur Fehler gemeldet, die auf ein fehlgeschlagenes Laden von Klassen zurückzuführen sind, es sei denn, ein Nutzer lädt bestimmte Klassen durch Einfügen des Klassen-Runner-Arguments
-e
. - Problem 64877246: Fehlende Klassen zur JAR-Quellendatei hinzugefügt.
- Eine
Läufer
- Die
ShardingFilter
-Logik wurde vereinfacht. - Problem 65025743: Der
@RequiresDevice
-Filter unterstützt jetzt FTL-Emulatoren.
- Die
AndroidTestOrchestrator
- Duplizieren Sie keine Fehler in Berichten. Wenn ein Testprozess nach einem Fehlschlagen abstürzt, wird jetzt nur ein Fehler für den Test gemeldet.
- Problem mit Javadoc für Orchestrator behoben.
- Tests werden jetzt als verpasst angezeigt, wenn der Remote-Prozess abstürzt.
- Ab jetzt werden ignorierte Testläufe verarbeitet.
- Ignorierte Testläufe werden jetzt aus der Fußzeile ausgeschlossen, um ältere Ergebnisse abzugleichen.
- Probleme mit Laufzeitberechtigungen wurden behoben. Unter Android 7.0 (API-Level 24) und höher werden jetzt Testberichte 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)
Wichtige Änderungen
- Alle Artefakte
- API-Level unter 15 werden nicht mehr unterstützt. Die Mindestversion für das SDK verweist jedoch immer noch auf API-Level 9, damit Nutzer Zeit für ein Upgrade haben.
- Espresso
- Die verworfene Klasse
android.support.test.espresso.contrib.CountingIdlingResource
wurde gelöscht und inandroid.support.test.espresso.idling.CountingIdlingResource
verschoben.- Verwenden Sie
getInstance().register()
anstelle vonregisterIdlingResources()
.
- Verwenden Sie
- Guava wird jetzt in JAR-Dateien über einen anderen "internen" Namespace verschoben. Wenn Sie die Guava API versehentlich über Espresso-Namespaces verwenden, können Fehler auftreten.
- Entfernen Sie alle Verweise auf die schattierte Guava (
.core.deps.guava.
) - Support Library-Version auf Version 25.4.0 oder höher aktualisieren
- Entfernen Sie alle Verweise auf die schattierte Guava (
- Die verworfene Klasse
Bekannte Probleme
- AndroidTestOrchestrator
- Die Runner-Argumente
-e numShards
und-e shardIndex
werden derzeit nicht unterstützt - Parameterisierte Tests werden derzeit nicht unterstützt.
- Die Runner-Argumente
Neue Funktionen
- Espresso
- Neue Unterstützung von Multiprocess Espresso in API 26 für
espresso-core
undespresso-web
, aber nichtespresso-contrib
- Neue schlanke
IdlingRegistry
API- 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
IdlingScheduledThreadPoolExecutor
undIdlingThreadPoolExecutor
- 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
-Abgleichsfunktionen für Aufrufe:hasBackground()
stimmt mit der Hintergrund-Drawable-Ressource einesView
-Objekts überein.hasTextColor()
stimmt mit der Farbe einesTextView
-Objekts überein.
- Neue Methoden für Aufrufaktionen:
- Die Aufrufaktion von
scrollTo()
wurde für die Arbeit mit untergeordneten Elementen vonListView
erweitert. repeatedlyUntil()
: Führt den angegebenenViewAction
für eine Ansicht aus, bis die Ansicht dem gewünschtenViewMatchers
entspricht.
- Die Aufrufaktion von
- Neue Espresso-Methoden:
pressBackUnconditionally()
: Ähnlich wiepressBack()
, löst aber keine Ausnahme aus, wenn Espresso verwendetnoActivity()
: Sie müssen nicht mehr auf eine Aktivität warten, bevor SieViewAction
oderViewAssertion
ausführen.onIdle()
: Führt den Hauptthread in Schleife, bis die App inaktiv wird.onIdle(Callable<T>)
: WieonIdle()
, verwendet jedoch einen zusätzlichenCallable
als Parameter, der ausgeführt wird, wenn die Anwendung inaktiv ist.
webScrollIntoView()
– Neuesespresso-web
-Atom, mit dem Sie innerhalb einesWebView
scrollen können
- Neue Unterstützung von Multiprocess Espresso in API 26 für
- Runner
-
InterceptingActivityFactory
undSingleActivityFactory
– Bietet eine Möglichkeit, eine Aktivität zu testen, die von der Außenwelt isoliert ist, indem Methoden wiestartService()
undsendBroadcast()
überschrieben werden. -
Unterstützung für die Verwendung von JUnitParams mit
AndroidJUnitRunner
hinzufügen -
Mit der Verarbeitung von
@UiThreadTest
auf der Ebene des zentralen Test-Runners beginnen und@UiThreadTestRule
verwerfen: Dadurch kann die Annotation@UiThreadTest
direkt für Methoden verwendet werden, die mit@Before
und@After
annotiert sind. -
Die Anmerkung
@SdkSupress
unterstützt jetzt den WertmaxSdkVersion
(Problem 37067792). -
-e classLoader
– Bietet die Möglichkeit, Klassen-Loader mithilfe von Runner-Argumenten zu übergeben. -
-e filter
– Unterstützung für benutzerdefinierte JUnit-Filter, die mithilfe von Runner-Argumenten angegeben werden sollen -
-e runnerBuilder
– Ermöglicht es Entwicklern, ihre eigenen Implementierungen vonRunnerBuilder
bereitzustellen, um festzustellen, 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, bei dersetResult()
aufgerufen wurde
- AndroidTestOrchestrator
- Android Test Orchestrator bietet eine neue Möglichkeit zum Erfassen und Ausführen von Tests. Der Schwerpunkt liegt dabei auf Richtigkeit und Isolation. Orchestrator ist ein unabhängiger Instrumentierungsprozess, der für jeden Test einen Instrumentierungs-Runner-Prozess generiert und die Ergebnisse erfasst.
- Anwendungsabstürze deaktivieren die Runner-Instrumentierung, aber nicht den Orchestrator, sodass Ihre Testsuite weiterlaufen kann.
- Erfordert die Installation des Orchestrator-APKs:
'com.android.support.test:orchestrator:1.0.0'
- Version 1.0 hat nur eine Befehlszeilenschnittstelle; die Integration in Android Studio und Firebase Test Labs ist geplant
- Android Test Orchestrator bietet eine neue Möglichkeit zum Erfassen und Ausführen von Tests. Der Schwerpunkt liegt dabei auf Richtigkeit und Isolation. Orchestrator ist ein unabhängiger Instrumentierungsprozess, der für jeden Test einen Instrumentierungs-Runner-Prozess generiert und die Ergebnisse erfasst.
Fehlerkorrekturen
- Espresso
- Verbesserte Synchronisierung der Root-Ansicht für eine deutliche Reduzierung der Unzuverlässigkeit
- Beschädigung von
IdlingResourceRegistry
beheben - Bessere Synchronisierung von
IdlingResource
-Objekten - Problem 37132680: Espresso wartet nicht, bis Dialogfelder erstellt wurden, bevor die nächste Aktion ausgeführt wird.
- Problem 37103280: Espresso sollte ProGuard-Nutzerregeln ausliefern, damit Nutzer diese nicht hinzufügen müssen
- Problem 37094726: Espresso-Intents enthalten ein unnötiges Anwendungslabel
- Problem 37093953: Espresso: Keine Prüfung auf Null-/leeren Fehlertext verfügbar
- Problem 37071776:
espresso-core
bettet die.pom
-Dateien von Guava ein - Problem 37062612: NPE in
release()
- Problem 37063389: Wenn Guava und
espresso-web
alsandroidTest
-Abhängigkeiten bestehen, wird keine Kompilierung durchgeführt - Problem 37070533: Unterstützung für
NavigationView
in der Android Design Support Library hinzugefügt
- Runner
-
Probleme mit der Verwendung von
@UiThreadTest
in Kombination mit@Test(timeout = 123)
beheben - Runner-Argument
-e notClass
wurde korrigiert - Fehlerkorrektur für
-e log
zur Unterstützung von JUnit3- und JUnit4-Testsuiten sowieParameterized
- undEnclosed
-Runnern - Problem 37663530: Warten Sie, bis alle Aktivitäten vor und nach jeder Testmethode abgeschlossen sind
- Problem 37132680: Espresso wartet nicht, bis Dialogerstellung abgeschlossen ist, bevor die nächste Aktion durchgeführt wird
-
Problem 37123213:
@RequiresDevice
bei x86_64 ABI ignoriert -
Problem 37101485: Einige vom Manifest bereitgestellte Argumente für
AndroidJUnitRunner
wie Testgröße, Annotationen und Fehlerbehebung werden ignoriert - Problem 37082857: Die halbparallele Espresso-Testausführung schlägt bei statischen Objekten fehl
-
Problem 37063396: Kontext nicht mit
ProviderTestCase2
initialisiert (UrsacheNullPointerException
)
-
Probleme mit der Verwendung von
- Regeln
- Der
ActivityTestRule
-Lebenszyklus wurde korrigiert, um das Verhalten bei der regulären und der verzögertenActivityTestRule
-Initialisierung zu vereinheitlichen - Problem 37079943: Beheben Sie
ServiceTestRule
, um das erneute Binden zuzulassen. - Problem 37109342:
getActivityResult()
undActivityResultMatchers
hinzufügen
- Der
- UiAutomator
setUiAutomationFlags()
zur Verwendung mitUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
: Damit kannUiAutomator
verwendet werden, während andere Bedienungshilfen ausgeführt werden.- Problem 37082813:
setText()
gibt bei leerenEditText
-ObjektenNullPointerException
aus, wenn das API-Level 19 oder niedriger ist.
Weitere wichtige Änderungen
- Binärprogramme werden jetzt über Google Maven veröffentlicht
- Größe der JAR-Dateien für
espresso-core
undespresso-web
verringert – bei eingebetteten Abhängigkeiten wird jetzt ProGuard angewendet - Alle
.aar
-Dateien enthalten jetzt ProGuard-Regeln - Freigegebenen Artefakten
proguard_library.cfg
Dateien hinzufügen - Für die
Tapper
-Schnittstelle ist eine neue Version vonsendTap()
verfügbar, die implementiert werden soll.
Externe Beiträge
- Espresso
- Läufer
- Regeln
Espresso 2.2.2, Runner/Rules 0.5 (22.02.2016, Stummer Release)
Neue Funktionen
- Espresso
- Problem 194253: Unterstützung für NavigationView in Android Support Design Library hinzugefügt
- Überprüfungen für aktivierte Animationen und Übergänge wurden hinzugefügt.
- Neue
ViewMatcher
API:withResourceName()
Fehlerkorrekturen
- Espresso
- Problem 195331: Espressokern bettet die Pom-Dateien von Guava ein
- Die Zählung der inaktiven Ressource wurde aus dem Espressobeitrag verschoben
- Regeln
- Problem 187249: NPE in
Intents.release()
- Problem 187249: NPE in
- Runner
- Problem 196066: Das Argument
-e log true
inAndroidJUnitRunner
umgeht den tatsächlichen Test nicht. - Auf Debugger in
onCreate()
des Runners warten - Alle unterstützten Testanmerkungen wurden von der Plattform in den ATSL verschoben
- Der Stacktrace-Dump „Keine JSBridge“ wurde entfernt
- Fester
AndroidAnnotatedBuilder
- Problem 196066: Das Argument
Weitere wichtige Änderungen
- Die Betaphase von
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
undServiceTestRule
ist beendet - Datei mit Einstellungen für den Codestil für eine einheitliche Codeformatierung hinzufügen
Espresso 2.2.1, Runner/Rules 0.4 (15.09.2015)
Neue Funktionen
- Regeln
- Neuer
IntentsTestRule
-Konstruktor wurde hinzugefügt, um vollständig mitActivityTestRule
kompatibel zu sein.
- Neuer
- Runner
- Multidex-Sonderfallinstallation für API-Level 15 und niedriger hinzugefügt
- Ausschlussfilter zu 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 bis auf einen 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: Ansicht-Matcher für den Eingabetyp in einem
EditText
-Objekt hinzufügen - 157912: Ansicht-Matcher zum Abgleichen von Fehlertexten in einem
EditText
-Objekt hinzufügen - 150674:
DrawerActions
-Unterstützung für Schubladen mit beliebiger Schwerkraft hinzufügen - 150744:
DrawerActions
wird nicht mehr ausgegebenparentListener
- 153303: Die in der Option „Ist die Schublade offen oder geschlossen?“ angegebene Schwerkraft
- 157910: Fügen Sie
DrawerLayout
-Factorys für die offene und geschlossene Aktion hinzu.
- 157911: Ansicht-Matcher für den Eingabetyp in einem
Fehlerkorrekturen
- Espresso
ViewActions.closeSoftKeyboard()
stellt nun sicher, dass die Softtastatur vollständig verschwunden ist.- Synchronisierungsproblem mit der
Espresso.pressBack()
-Methode von Espresso auf API-Ebene 21 und höher behoben - Die Synchronisierung von Animationen beim Schließen der Tastatur auf API-Level 23 wurde korrigiert.
- Regeln
- Fehlerkorrektur für
ServiceTestRule
auf API-Level 23.startService()
muss immer mit einem explizitenIntent
aufgerufen werden.
- Fehlerkorrektur für
- Runner
- Fehlerhafte
JaCoCo
-Unterstützung für Gradle korrigiert - Unterstützung für defekte Testfragmentierung behoben
- Inkonsistenter Status im Test-Runner nach Zeitüberschreitungen des Stiltests von
JUnit3
behoben
- Fehlerhafte
Weitere wichtige Änderungen
- Javadoc-Fehlerbehebungen und verbesserte Fehlermeldungen
suite()
-Methoden und Initialisierungsfehler bei der Verwendung von Methodenfiltern ignorieren
Espresso 2.2 / ATSL 0.3 (09.06.2015)
Neue Funktionen
- espresso-web 2.2
- Neuer
WebView
-Support
- Neuer
- Espresso-Core 2.2
- Zur Verwendung von dagger v2 migriert
- Migration zur Verwendung von Hamcrest Version 1.3
- espresso-contrib 2.2
- Prüfung auf Barrierefreiheit
- Gravitationsunterstützung von
DrawerActions
- Regeln 0.3
DisableOnAndroidDebug
Regel
- runner 0.3
- Upgrade von JUnit v4.10 auf JUnit v4.12
- Migration zur Verwendung von Hamcrest Version 1.3
Fehlerkorrekturen
- Problem mit der
DrawerActions
-Information „ParentListener
“ behoben - Annahmefehler werden jetzt als Ignorieren-Test und nicht als fehlgeschlagener Test behandelt
- Behebung von
MonitoringInstrumentation
-leckeren Aktivitätsinstanzen überExecutorService
- Problem behoben, bei dem verwaiste Aktivitäten im Status „Gestoppt“ hängen geblieben sind
- Aktualisieren Sie
Until.scrollFinished()
, um „true“ zurückzugeben, wenn keine Scroll-Ereignisse generiert wurden. Schutz vor potenzieller NPE inUiObject2#setText()
.
Espresso 2.1, Test Runner/Rules 0.2 und UIAutomator 2.1.0 (21.04.2015)
Wichtige Änderungen
- Das Test-Runner-Artefakt wurde in zwei Teile aufgeteilt und der Name wurde von
com.android.support.test:testing-support-lib:0.1
incom.android.support.test:runner:0.2
undcom.android.support.test:rules:0.2
geändert.
Neue Funktionen
- espresso-intents: Mockito-ähnliche API, die hermetische Interaktivitätstests ermöglicht, indem Testautoren ausgehende Intents verifizieren und Stubs ausgeben können.
IntentsTestRule
: erweitertActivityTestRule
, initialisiert und gibt Espresso-Intents in funktionalen UI-Tests frei
- Espresso-Core
ViewActions
: Möglichkeit zum Ausführen globaler Assertions vor dem Ausführen von Aktionen hinzugefügt. Dies ist nützlich für andere Frameworks, die auf Espresso aufbauen, um den Status der Ansichtshierarchie zu validieren, während eine vorhandene Espresso-Testsuite ausgeführt wird.ViewMatchers.withContentDescription()
resId
Überlastung
- Regeln
ActivityTestRule
: Diese Regel ermöglicht Funktionstests für eine einzelne Aktivität.- Annotationen
UiThreadRule
undUiThreadTest
: Mit dieser Regel kann die mitUiThreadTest
annotierte Testmethode im Hauptthread (oder UI-Thread) der Anwendung ausgeführt werden. ServiceTestRule
: Diese Regel ermöglicht Funktionstests für einen Dienst.
- Runner
ApplicationLifecycleCallback
: Callback zum Überwachen von Ereignissen im Anwendungslebenszyklus- Alle Runner-Argumente können jetzt auch in der Android-Manifestdatei mit einem
<meta-data>
-Tag angegeben werden.
- UIAutomator
UiDevice.dumpWindowHierarchy()
kann jetzt eineFile
oderOutputStream
akzeptieren
Fehlerkorrekturen
- Espresso
- Der Cursor-Matcher gibt jetzt
false
zurück, wenn die Spalte nicht gefunden wurde, damit Hamcrest zum nächsten Cursor wechseln kann NullPointerException
mitPreferenceMatchers
withTitle
tritt nicht mehr auf- Das Aufheben der Registrierung einer inaktiven Ressource führt nicht mehr dazu, dass Espresso glaubt, dass keine inaktiven Ressourcen mehr verfügbar sind
- Aktualisierte Version für Supportanmerkungen, die von Espresso Contrib verwendet wird
- Der Cursor-Matcher gibt jetzt
- Runner
AndroidJUnit4
überspringt jetzt Tests mit fehlgeschlagenen Annahmen
- UIAutomator
- Watchers ausführen, um
StaleObjectException
zu verhindern
- Watchers ausführen, um
Weitere wichtige Änderungen
- Fügen Sie eine bessere Fehlermeldung hinzu, wenn der Text nicht mit einer nicht-lateinischen Zeichenfolge eingegeben werden kann.
UIAutomator 2.0 (12.03.2015)
UI Automator basiert jetzt auf der Android-Instrumentierung. Sie können Tests mit dem Befehl ./gradlew connectedCheck
erstellen und ausführen.
Espresso Version 2.0, Test Runner 0.1 (veröffentlicht am 19.12.2014)
Wichtige Änderungen
- Espresso wurde in einen neuen Namespace von
android.support.test.espresso
nachandroid.support.test.espresso
verschoben - Espresso-Artefakte wurden umbenannt:
espresso-1.1.jar
ist jetztespresso-core-release-2.0.jar
- Die Benutzeroberfläche von
IdlingResource
wurde in eine separate Bibliothek verschoben:espresso-idling-resource-release-2.0.jar
CountingIdlingResource
befindet sich jetzt inespresso-contrib-release-2.0.jar
(wie es immer sein sollte).
- Optional (eine Guava-Abhängigkeit) wurde aus der öffentlichen API entfernt, um die Neubündelung der Guave-Abhängigkeit zu unterstützen und eine DEX-Kollision (eine Hauptursache von Entwicklungsproblemen) zu vermeiden. Betroffene Methoden sind:
ViewAssertion.check()
HumanReadables.getViewHierarchyErrorMessage()
Neue Funktionen
- Aktionen
ViewActions
replaceText()
openLink()
- Nach oben und unten wischen
- Espresso-contrib
RecyclerViewActions
: verarbeitet Interaktionen mitRecyclerViews
PickerActions
: verarbeitet Interaktionen mit der AuswahlDate
undTime
- Matcher
RootMatchers
isPlatformPopup()
ViewMatchers
isJavascriptEnabled()
withSpinnerText()
withHint()
isSelected()
hasLinks()
LayoutMatchers
: Matcher für i18n-bezogene LayouttestsCursorMatchers
: eine Sammlung von Matchern fürCursor
-Objekte
- Assertions
PositionAssertions
, einschließlichisLeftOf()
undisAbove()
: Sammlung vonViewAssertions
zur Überprüfung der relativen Position von Elementen auf dem BildschirmLayoutAssertions
: Assertions für i18n-bezogene Layouttests
- Test-App: Viele neue Beispielaktivitäten/Tests
- Sonstiges
Espresso.unregisterIdlingResources()
undEspresso.getIdlingResources()
bieten zusätzliche Flexibilität für die Arbeit mitIdlingResources
ViewInteraction.withFailureHandler()
: Ermöglicht das Überschreiben des Fehler-Handlers ausonView()
onData()
-Support fürAdapterViews
, unterstützt vonCursorAdapters
Fehlerkorrekturen
ViewMatchers.isDisplayed()
gleicht Aufrufe ab, die den gesamten Bildschirm einnehmen, aber nicht mehr als 90% angezeigt werden- Der Aufruf einer Wischaktion an
DrawerActions.openDrawer()
führt nicht mehr zuIdlingResourceTimeoutException
Weitere wichtige Änderungen
- Von der Funktion „Build mit Maven“ zu Gradle gewechselt
- Espresso-Abhängigkeiten (Guava, Dagger, Hamcrest) wurden aus dem Weg geräumt, um DEX-Kollisionen zu vermeiden.
- Geändert, damit beim Registrieren und Aufheben der Registrierung inaktiver Ressourcen Erfolg oder Fehler zurückgegeben werden
- Lollipop-Unterstützung: Platzieren Sie
message.recycle()
hinter einer Schnittstelle, um versionsbezogene Änderungen zu berücksichtigen. - Ziel-SDK-Level wurde auf 21 umgestellt – betrifft hauptsächlich die Test-App
Version 1.1 (veröffentlicht am: 08.01.2014)
Espresso
- Neu
swipeLeft
undswipeRight
ViewActions
- Unterstützung des Mehrfenstermodus: Eine erweiterte Funktion, mit der das Zielfenster ausgewählt werden kann, auf dem Espresso den Vorgang ausführen soll
- Verbesserungen an
TypeTextAction
: Ermöglicht die Texteingabe in einer vorfokussierten Ansicht und vereinfacht so das Anhängen von Text - Zahlreiche Fehlerkorrekturen
Espresso Contrib-Bibliothek
- Diese neue Bibliothek enthält Funktionen, die Espresso ergänzen, aber nicht Teil der Kernbibliothek sind.
- Neue
DrawerActions
für den Betrieb mitDrawerLayout
: ist von der Android Support Library abhängig und befindet sich daher außerhalb der Espresso-Kernbibliothek
Beispieltests
- Diese Tests wurden verlagert und befinden sich im selben Paket wie die Test-App
- Durch Maven-POMs wurden doppelte Guava-Deps entfernt, sodass
mvn install
jetzt funktionieren sollte