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)
Questa è la release stabile di AndroidX Test 1.1.0
- Core
- Fai in modo che ActivityScenario supporti le attività che ne avviano un'altra
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
- Nuovo artefatto di estensione Kotlin core-ktx. Include un'API ActivityScenario.launchActivity compatibile con Kotlin
- Nuova API ActivityScenario per avviare attività con intent personalizzati
- Nuova API ActivityScenario per ricevere un risultato di attività
- Rendi chiudibile ActivityScenario
- Espresso
- Modifica withResourceNameMatcher e HumanReadables per renderli compatibili con l'API 28.
- Aggiorna la descrizione di ReplaceTextAction in modo che includa stringToBeSet
- Supporta Espresso in modalità looper in pausa di Robolectric.
- JUnit
- Nuova API ActivityScenarioRule per l'avvio e la chiusura automatici di un'attività durante l'impostazione e l'eliminazione dei test
- Nuovo artefatto di estensione Kotlin junit-ktx. Include un'API ActivityScenarioRule compatibile con Kotlin
- Runner
- Rendi coerenti il comportamento dei pacchetti -e e dei file di test -e quando ricevono pacchetti
- Verità
- Aggiungi le API BundleSubject bool, parcelable e parcelableAsType
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)
- Tutti
- Imposta minSdkVersion su 14 e targetSdkVersion su 28
- Espresso
- Correggi withContentDescription in modo che funzioni con tipi non stringa
- Aggiungere il supporto per l'utilizzo di Espresso su Robolectric
- Problema 72798625: Espresso ViewMatchers.withText non funziona quando textAllCaps è abilitato
- Aggiungere il supporto per l'inserimento di una sequenza di eventi di movimento
- Intent
- Aggiungi l'API beta per recuperare l'elenco degli intent. Destinato all'uso con nuove asserzioni di verità
- Runner
- Aggiungere il supporto per le app istantanee
- Deprecare androidx.test.runner.AndroidJUnit4 e sostituirlo con androidx.test.ext.junit.runners.AndroidJUnit4
- Monitora
- Ritira androidx.test.InstrumentationRegistry e sostituiscilo con androidx.test.platform.app.InstrumentationRegistry e androidx.test.core.app.ApplicationProvider
- AndroidTestOrchestrator
- Abilita la gestione della copertura dell'orchestratore solo se vengono passati entrambi gli argomenti "coverage" e "coverageFilePath".
- Attendi il debugger solo quando è impostato -debug, ma non per elencare gli scenari di test ATO. È stato aggiunto un nuovo flag orchestratorDebug per il debug dell'orchestratore stesso
- Core
- Nuovo artefatto. Include nuove API che supportano test locali e sul dispositivo per:
- Recupero del contesto: ApplicationProvider
- Controllo dei cicli di vita delle attività: ActivityScenario(beta)
- Builder per MotionEvent, PackageInfo
- Classe di utilità Parceables
- Nuovo artefatto. Include nuove API che supportano test locali e sul dispositivo per:
- Verità
- Nuovo elemento! Include soggetti di verità personalizzati per Notifica, Intent, Bundle, Parcelable e MotionEvent
- JUnit
- Nuovo elemento! Include la classe di esecuzione JUnit androidx.test.ext.junit.runners.AndroidJUnit4 che supporta i test locali e sul dispositivo.
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
- Modifica dell'API che causa interruzioni:
- Nel problema 64062890 è stato portato alla nostra attenzione che stavamo utilizzando Guava Optional nella nostra API pubblica. Si è trattato di una grave svista da parte nostra . Di conseguenza, in questa release è stata apportata una modifica all'API pubblica per risolvere il problema. Abbiamo introdotto un wrapper brutto intorno alla classe Guava Optional, denominato EspressoOptional, che si trova nello spazio dei nomi "android.support.test.espresso.util". Gli sviluppatori che utilizzavano l'API Guava Optional trapelata devono modificare le importazioni e i riferimenti per utilizzare EspressoOptional durante l'aggiornamento a questa nuova versione. Ci scusiamo per gli eventuali disagi causati.
- Le API onView() e onData() ora sono contrassegnate con @CheckReturnValue per evitare errori
- È stato corretto il file POM espresso-core in modo che non estragga la dipendenza "rules", ma che venga estratta dal file POM espresso-intents. Per gli sviluppatori, questa modifica non dovrebbe comportare alcuna operazione, poiché espresso-intents non può essere utilizzato senza espresso-core.
- Problema 65486414: dipendenza guava mancante in Espresso
- Problema 65576174: Espresso IdlingResourceRegistry.sync causa l'esito negativo del secondo test
- Problema 65568629: Espresso.onIdle non utilizza IdlingRegistry
- Problema 69333598: espresso 3.0.1 incompatibile con play-services-auth:11.6.0 nel modulo della libreria Android.
- Problema 64062890: tipo facoltativo interno esposto dall'interfaccia AdapterViewProtocol
- Problema 64091847: Espresso 3.0.0 NON deve dipendere dall'esecutore test
- Problema 73722050: i pacchetti espresso-contrib 3.0.2-alpha1 contengono classi android.arch.{lifecycle/core}
- Modifica dell'API che causa interruzioni:
- Espresso-remote
- Questo è un nuovo artefatto. Abbiamo disaccoppiato tutte le funzionalità multiprocesso di Espresso al di fuori dell'artefatto espresso-core. Questo è più pulito e dovrebbe ridurre significativamente le dimensioni complessive e il numero di metodi di espresso-core.
- Runner
- Tronca la traccia dello stack se è troppo grande per una transazione binder. Poiché AJUR deve segnalare gli errori ad AM tramite un IPC Binder, dobbiamo assicurarci di non superare il limite di transazioni Binder, ovvero 1 MB per processo.
- Problema 65828576: TestRequestBuilder si arresta in modo anomalo durante l'esecuzione del test nella classe con @Ignore
- Problema 37057596: non gestiamo gli errori in @BeforeClass
- Regole
- Assicurati di rilasciare un riferimento all'attività in fase di test dopo le modifiche del ciclo di vita. Durante la durata del test, ora è possibile manipolare l'attività direttamente utilizzando il riferimento ottenuto da #getActivity(). Se l'attività viene completata e riavviata, il riferimento restituito da #getActivity() ora punta sempre all'istanza corrente dell'attività.
- Problema 64389280: GrantPermissionRule non fornisce WRITE_EXTERNAL_STORAGE
- Problema 37065965: ActivityTestRule perde l'attività dopo la modifica dell'orientamento
- Problema 75254050: ActivityTestRule non aggiorna l'istanza Activity durante le modifiche alla configurazione
- Problema 64464625: impossibile eseguire operazioni sull'UI nel metodo finish() di Activity
- AndroidTestOrchestrator
- Passa i flag
-e coverage true -e coverageFilePath /sdcard/foo/per generare file di copertura nella posizione specificata (l'app deve disporre dell'autorizzazione di scrittura nella posizione specificata). La convenzione di denominazione dei file di copertura ora è simile a questa:com.foo.Class#method1.ec. Tieni presente che questa opzione è supportata solo quando viene eseguita in modalità isolata. Inoltre, non può essere utilizzato insieme al flagcoverageFiledi AndroidJUnitRunner. Poiché i file di copertura generati si sovrascrivono a vicenda. - Passa il flag
-e clearPackageDatase vuoi che l'orchestratore esegua i comandipm clear context.getPackageName()epm clear targetContext.getPackageName()tra le chiamate di test. Tieni presente che il contesto nel comando clear è il contesto dell'app in fase di test. - Corretto: quando si esegue un test vuoto, ovvero senza @Test all'interno della destinazione, il risultato del test è diverso dalla modalità legacy.
- Problema 72758547: Test Orchestrator causa l'incompletezza dei dati di copertura Jacoco, che contengono solo i dati dell'ultima esecuzione del test
- Problema 67916042: Android Test Orchestrator : esecuzione interrotta in caso di arresto anomalo del processo a causa di OutOfMemory
- Problema 77752735: Orchestrator si arresta in modo anomalo per TransactionTooLargeException
- Problema 77549481: Test Orchestrator deve eseguire "pm clear" dopo ogni test
- Passa i flag
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (05/12/2017)
Espresso
Intentsora ha una risposta chiamabile, che consente l'esecuzione dei test dopo l'acquisizione di un intent attivato, ma prima di restituire un oggettoInstrumentation.ActivityResult.
Runner
Dividi l'artefatto monitor maven
com.android.support.test:monitor:<version>, per gli utenti che hanno bisogno diMonitoringInstrumentationsenza test e funzionalità JUnit.Se utilizzi
com.android.support.test:runner:<version>, tutto funziona come previsto, perché Gradle estrae automaticamente il modulomonitorcome dipendenza del modulorunner.Aggiunto il flag
newRunListenerOrderMode. Quandotrue, i listener definiti dall'utente vengono eseguiti prima dei listener predefiniti. (Prevediamo che questo comportamento diventerà alla fine quello predefinito.)Problema 65828576:
TestRequestBuildersi arresta in modo anomalo durante l'esecuzione di test in una classe annotata con@Ignore(autonoma senza esecuzione di test o funzionalità JUnit).
AndroidTestOrchestrator
- Ora gestisce i test vuoti allo stesso modo di
AndroidJUnitRunnernon orchestrati. - Orchestrator ora può gestire output standard molto grandi da
AndroidJUnitRunner.
- Ora gestisce i test vuoti allo stesso modo di
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28/08/2017)
Espresso
- È stata aggiunta un'opzione
IdlingPolicyper eliminareonTimeout()quando è collegato un debugger passo passo alla VM. - Problemi 64024656, 64247586
e 64525881: non segnalare errori per
il caricamento senza esito delle classi, a meno che un utente non carichi classi specifiche
includendo l'argomento del runner di classi
-e. - Problema 64877246: aggiungi le classi mancanti al file JAR delle fonti.
- È stata aggiunta un'opzione
Runner
- Logica
ShardingFiltersemplificata. - Problema 65025743: il filtro
@RequiresDeviceora supporta gli emulatori FTL.
- Logica
AndroidTestOrchestrator
- Non duplicare gli errori dei report. Quando un processo di test si arresta in modo anomalo dopo un errore, ora viene segnalato un solo errore per il test.
- Javadoc corretto per Orchestrator.
- I test ora vengono indicati come non riusciti se il processo remoto si arresta in modo anomalo.
- Ora gestisce gli scenari di test ignorati.
- Ora esclude i casi di test ignorati dal piè di pagina in modo che corrispondano ai risultati precedenti.
- Risolti i problemi relativi alle autorizzazioni di runtime. I report di test vengono ora scritti sulla scheda SD su Android 7.0 (livello API 24) e versioni successive.
Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25/07/2017, annuncio)
Modifiche che provocano un errore
- Tutti gli artefatti
- Interruzione del supporto per i livelli API inferiori a 15. Tuttavia, l'SDK minimo fa ancora riferimento al livello API 9 per dare agli utenti il tempo di eseguire l'upgrade
- Espresso
- La classe obsoleta
android.support.test.espresso.contrib.CountingIdlingResourceè stata eliminata e spostata inandroid.support.test.espresso.idling.CountingIdlingResource- Utilizza
getInstance().register()invece diregisterIdlingResources()
- Utilizza
- Guava è ora jarjar'd in uno spazio dei nomi "interno" diverso. Se utilizzi accidentalmente l'API Guava tramite gli spazi dei nomi Espresso, potresti riscontrare interruzioni
- Rimuovi tutti i riferimenti a Guava ombreggiata (
.core.deps.guava.) - Esegui l'upgrade della versione della libreria di supporto alla versione 25.4.0 o successive
- Rimuovi tutti i riferimenti a Guava ombreggiata (
- La classe obsoleta
Problemi noti
- AndroidTestOrchestrator
- Gli argomenti di esecuzione
-e numShardse-e shardIndexnon sono attualmente supportati - I test parametrizzati non sono attualmente supportati
- Gli argomenti di esecuzione
Nuove funzionalità
- Espresso
- Nuovo supporto Espresso multiprocesso
sull'API 26 per
espresso-coreeespresso-web, ma nonespresso-contrib - Nuova API
IdlingRegistryleggera- Pubblicato nell'ambito di
com.android.support.test.espresso:espresso-idling-resource:3.0.0 - Metodi ritirati:
- Pubblicato nell'ambito di
- Nuova API per la sincronizzazione con
Executors- Nuovo artefatto Maven:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0 - Contiene
IdlingScheduledThreadPoolExecutoreIdlingThreadPoolExecutorcorsi
- Nuovo artefatto Maven:
- Nuova API per la sincronizzazione con richieste e risposte di rete.
- Nuovo artefatto Maven:
com.android.support.test.espresso.idling:idling-net:3.0.0 - Contiene
UriIdlingResourcecorso
- Nuovo artefatto Maven:
- Nuovi criteri di corrispondenza delle visualizzazioni
espresso-core:hasBackground()corrisponde a una risorsa disegnabile di sfondo dell'oggettoViewhasTextColor()corrisponde al colore di un oggettoTextView
- Nuovi metodi di azione di visualizzazione:
- Azione di visualizzazione
scrollTo()migliorata per funzionare con i discendenti diListView repeatedlyUntil()– Esegue laViewActionspecificata su una visualizzazione finché la visualizzazione non corrisponde alViewMatchersdesiderato
- Azione di visualizzazione
- Nuovi metodi Espresso:
pressBackUnconditionally()– Simile apressBack(), ma non genera un'eccezione quando Espresso naviganoActivity()– Elimina la necessità di attendere un'attività prima di eseguire unViewActionoViewAssertiononIdle()– Esegue il loop del thread principale finché l'app non diventa inattivaonIdle(Callable<T>)– ComeonIdle(), ma accetta un ulterioreCallablecome parametro, che viene eseguito dopo che l'app è inattiva
webScrollIntoView()– Nuovo atomoespresso-webche consente di scorrere all'interno di unWebView
- Nuovo supporto Espresso multiprocesso
sull'API 26 per
- Runner
-
InterceptingActivityFactoryeSingleActivityFactory: fornisce una funzionalità di test di un'attività isolata dal mondo esterno eseguendo l'override di metodi comestartService()esendBroadcast() -
Aggiunto il supporto per l'utilizzo di JUnitParams
con
AndroidJUnitRunner -
Inizia a gestire
@UiThreadTesta livello di esecuzione dei test di base e ritira@UiThreadTestRule. In questo modo è possibile utilizzare l'annotazione@UiThreadTestdirettamente sui metodi annotati con@Beforee@After -
L'annotazione
@SdkSupressora supporta il valoremaxSdkVersion(problema 37067792) -
-e classLoader: consente di passare i caricatori di classi utilizzando gli argomenti del runner -
-e filter– Aggiungi il supporto per i filtri JUnit personalizzati da specificare utilizzando gli argomenti del runner -
-e runnerBuilder: consente agli sviluppatori di fornire le proprie implementazioni diRunnerBuilderche possono determinare se e come possono essere eseguite su una classe specifica
-
- Regole
ProviderTestRule– Nuova API per testare gli oggettiContentProvidergetActivityResult()eActivityResultMatchers– Nuova API per recuperare il risultato dell'attività di un'attività che ha chiamatosetResult()
- AndroidTestOrchestrator
- Android Test Orchestrator
offre un nuovo modo di raccogliere ed eseguire i test, con particolare attenzione
a correttezza e isolamento. Orchestrator è un processo di strumentazione indipendente che genera un processo di esecuzione della strumentazione per ogni test e raccoglie i risultati.
- Gli arresti anomali dell'applicazione interrompono la strumentazione del runner, ma non l'orchestratore, consentendo alla suite di test di continuare
- Richiede l'installazione dell'APK di Orchestrator –
'com.android.support.test:orchestrator:1.0.0' - La versione 1.0 ha solo un'interfaccia a riga di comando; è prevista l'integrazione con Android Studio e Firebase Test Lab
- Android Test Orchestrator
offre un nuovo modo di raccogliere ed eseguire i test, con particolare attenzione
a correttezza e isolamento. Orchestrator è un processo di strumentazione indipendente che genera un processo di esecuzione della strumentazione per ogni test e raccoglie i risultati.
Correzioni di bug
- Espresso
- Miglioramento della sincronizzazione della visualizzazione principale per ridurre significativamente l'instabilità
- Correggere il danneggiamento di
IdlingResourceRegistry - Migliore sincronizzazione con gli oggetti
IdlingResource - Problema 37132680: Espresso non attende il completamento della creazione della finestra di dialogo prima di eseguire l'azione successiva
- Problema 37103280: Espresso deve includere le regole ProGuard per i consumatori, in modo che questi non siano tenuti ad aggiungerle
- Problema 37094726: Espresso Intents contiene un'etichetta dell'applicazione non necessaria
- Problema 37093953: Espresso: No available check for null/empty error text
- Problema 37071776:
espresso-coreincorpora i file.pomdi Guava - Problema 37062612: NPE in
release() - Problema 37063389: l'utilizzo di Guava e
espresso-webcome dipendenzeandroidTestnon viene compilato - Problema 37070533: aggiunta del supporto per
NavigationViewin Android Design Support Library
- Runner
-
Correggi la possibilità di utilizzare
@UiThreadTestin combinazione con@Test(timeout = 123) - Fixed
-e notClassrunner arg - È stato corretto
-e logper supportare le suite di test JUnit3 e JUnit4, nonché i runnerParameterizedeEnclosed. - Problema 37663530: attendi il completamento di tutte le attività prima e dopo ogni metodo di test
- Problema 37132680: Espresso non attende il completamento della creazione della finestra di dialogo prima di eseguire l'azione successiva
-
Problema 37123213:
@RequiresDeviceignorato su ABI x86_64 -
Problema 37101485: alcuni argomenti forniti dal manifest
per
AndroidJUnitRunner, come le dimensioni del test, l'annotazione e il debug, vengono ignorati - Problema 37082857: l'esecuzione del test semi-parallelo di Espresso non riesce sugli oggetti statici
-
Problema 37063396: contesto non inizializzato
con
ProviderTestCase2(causaNullPointerException)
-
Correggi la possibilità di utilizzare
- Regole
- Ciclo di vita
ActivityTestRulefisso per unificare il comportamento tra l'inizializzazione regolare e quella differita diActivityTestRule - Problema 37079943: correzione di
ServiceTestRuleper consentire il re-binding - Problema 37109342: aggiungi
getActivityResult()eActivityResultMatchers
- Ciclo di vita
- UiAutomator
setUiAutomationFlags()per l'utilizzo conUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES: questo consente di utilizzareUiAutomatormentre sono in esecuzione altri servizi di accessibilità- Problema 37082813:
setText()sugli oggettiEditTextvuoti generaNullPointerExceptionse il livello API è 19 o inferiore
Altre modifiche importanti
- I file binari vengono ora pubblicati tramite Google Maven
- Dimensioni ridotte dei file JAR
espresso-coreeespresso-web: ora le dipendenze incorporate hanno ProGuard applicato - Tutti i file
.aarora includono le regole di ProGuard - Aggiungere file
proguard_library.cfgagli artefatti rilasciati - L'interfaccia
Tapperha una nuova versione disendTap()da implementare
Contributi esterni
- Espresso
- Runner
- Regole
Espresso 2.2.2, Runner/Rules 0.5 (22/02/2016, rilascio silenzioso)
Nuove funzionalità
- espresso
- Problema 194253: aggiunta del supporto per NavigationView nella libreria di progettazione di Android Support
- Sono stati aggiunti controlli per animazioni e transizioni attive
- Nuova API
ViewMatcher:withResourceName()
Correzioni di bug
- espresso
- Problema 195331: espresso-core incorpora i file POM di Guava
- Spostato il conteggio delle risorse inattive da espresso-contrib
- regole
- Problema 187249: NPE in
Intents.release()
- Problema 187249: NPE in
- runner
- Problema 196066: l'argomento
-e log trueinAndroidJUnitRunnernon ignora il test effettivo - Attendi il debugger in
onCreate()del runner - Sono state spostate tutte le annotazioni dei test supportate fuori dalla piattaforma e in ATSL
- Rimozione del dump della traccia dello stack relativo a JSBridge
- Fisso
AndroidAnnotatedBuilder
- Problema 196066: l'argomento
Altre modifiche importanti
ActivityTestRule,UiThreadTestRule,IntentsTestRuleeServiceTestRulenon sono più in versione beta- Aggiungere un file di impostazioni dello stile di codice per la formattazione uniforme del codice
Espresso 2.2.1, Runner/Rules 0.4 (15/09/2015)
Nuove funzionalità
- regole
- È stato aggiunto un nuovo costruttore
IntentsTestRuleper essere completamente compatibile conActivityTestRule
- È stato aggiunto un nuovo costruttore
- runner
- Aggiunta dell'installazione multidex per casi speciali per i livelli API 15 e precedenti
- Sono stati aggiunti filtri di esclusione alla classe e al pacchetto:
- Esegui tutti i test tranne quelli di una classe specifica:
adb shell am instrument -w -e notClass com.android.foo.FooTest - Esecuzione di tutti i test tranne uno:
adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo - Esecuzione di tutti i test tranne un pacchetto specifico:
adb shell am instrument -w -e notPackage com.android.foo.bar
- Esegui tutti i test tranne quelli di una classe specifica:
Contributi esterni
- espresso
- 157911: Aggiungi il matcher di visualizzazione per il tipo di input in un oggetto
EditText - 157912: Aggiungi il matcher di visualizzazione per la corrispondenza del testo di errore in
un oggetto
EditText - 150674: aggiungi il supporto di
DrawerActionsper i cassetti con gravità arbitraria - 150744:
DrawerActionsnon perde piùparentListener - 153303: Gravità specificata nei controlli "Il cassetto è aperto o chiuso?"
- 157910: Aggiungi factory di azioni di apertura e chiusura di
DrawerLayout
- 157911: Aggiungi il matcher di visualizzazione per il tipo di input in un oggetto
Correzioni di bug
- espresso
ViewActions.closeSoftKeyboard()ora garantisce che la tastiera su schermo non sia più visibile- Risolto il problema di sincronizzazione con il metodo
Espresso.pressBack()di Espresso sul livello API 21 e versioni successive - Sincronizzazione corretta per le animazioni di chiusura della tastiera al livello API 23
- regole
- Corretto
ServiceTestRulenel livello API 23,startService()deve sempre essere chiamato con unIntentesplicito
- Corretto
- runner
- È stato corretto il supporto di gradle
JaCoConon funzionante - È stato corretto il supporto dello sharding dei test non funzionante
- È stato corretto lo stato incoerente nel test runner dopo i timeout dei test di stile
JUnit3
- È stato corretto il supporto di gradle
Altre modifiche importanti
- Correzioni di Javadoc e miglioramenti dei messaggi di errore
- Ignora i metodi
suite()e non ignorare gli errori di inizializzazione quando utilizzi i filtri dei metodi
Espresso 2.2/ATSL 0.3 (09/06/2015)
Nuove funzionalità
- espresso-web 2.2
- Nuovo supporto
WebView
- Nuovo supporto
- espresso-core 2.2
- Eseguita la migrazione per utilizzare dagger v2
- Eseguita la migrazione per utilizzare hamcrest v1.3
- espresso-contrib 2.2
- Controlli di accessibilità
- Supporto della gravità
DrawerActions
- rules 0.3
DisableOnAndroidDebugregola
- runner 0.3
- Esegui l'upgrade da JUnit v4.10 a JUnit v4.12
- Eseguita la migrazione per utilizzare Hamcrest v1.3
Correzioni di bug
- Risolto il problema di
DrawerActionsperditeParentListener - L'errore di ipotesi ora viene trattato come un test ignorato anziché come un test non riuscito
- Corretto il problema di perdita di istanze di attività di
MonitoringInstrumentationtramiteExecutorService - Correzione per le attività orfane bloccate nella fase di interruzione
- Aggiorna
Until.scrollFinished()in modo che restituisca true se non sono stati generati eventi di scorrimento. Proteggiti da potenziali NPE inUiObject2#setText().
Espresso 2.1, Test Runner/Rules 0.2 e UIAutomator 2.1.0 (21/04/2015)
Modifiche che provocano un errore
- L'artefatto di Test Runner è stato suddiviso in due e il nome è stato modificato da
com.android.support.test:testing-support-lib:0.1acom.android.support.test:runner:0.2ecom.android.support.test:rules:0.2.
Nuove funzionalità
- espresso-intents: un'API simile a Mockito che consente di eseguire test di interattività ermetica
consentendo agli autori dei test di verificare e creare stub per gli intent in uscita
IntentsTestRule: estendeActivityTestRule, inizializza e rilascia Espresso-Intents nei test funzionali della UI
- espresso-core
ViewActions: È stata aggiunta la possibilità di eseguire asserzioni globali prima di eseguire le azioni. Ciò è utile per altri framework basati su Espresso per convalidare lo stato della gerarchia delle visualizzazioni durante l'esecuzione della suite di test Espresso esistente.ViewMatchers.withContentDescription()resIdoverload
- regole
ActivityTestRule: Questa regola fornisce test funzionali di una singola attività- Annotazioni
UiThreadRuleeUiThreadTest: questa regola consente l'esecuzione del metodo di test annotato conUiThreadTestsul thread principale (o thread UI) dell'applicazione ServiceTestRule: Questa regola fornisce test funzionali di un servizio
- runner
ApplicationLifecycleCallback: Callback per il monitoraggio degli eventi del ciclo di vita dell'applicazione- Ora tutti gli argomenti del runner possono essere specificati anche nel file manifest Android
utilizzando un tag
<meta-data>
- UIAutomator
UiDevice.dumpWindowHierarchy()ora può accettare unFileo unOutputStream
Correzioni di bug
- espresso
- Cursor matcher ora restituisce
falsese la colonna non è stata trovata, in modo che Hamcrest possa passare al cursore successivo NullPointerExceptionconPreferenceMatcherswithTitlenon si verifica più- L'annullamento della registrazione della risorsa inattiva non fa più pensare a Espresso che abbiamo risorse inattive occupate
- Versione aggiornata delle annotazioni di supporto utilizzata da Espresso Contrib
- Cursor matcher ora restituisce
- runner
AndroidJUnit4ora ignora i test con ipotesi non riuscite
- UIAutomator
- Esegui i watcher per evitare
StaleObjectException
- Esegui i watcher per evitare
Altre modifiche importanti
- Aggiungi un messaggio di errore migliore quando non è possibile digitare testo con una stringa non latina
UIAutomator 2.0 (12/03/2015)
UI Automator ora si basa su Android Instrumentation e puoi creare ed eseguire
test utilizzando il comando ./gradlew connectedCheck.
Espresso versione 2.0, Test Runner 0.1 (data di rilascio: 19/12/2014)
Modifiche che provocano un errore
- Espresso è stato spostato in un nuovo spazio dei nomi, da
android.support.test.espressoaandroid.support.test.espresso - Gli artefatti Espresso sono stati rinominati
espresso-1.1.jarè diventataespresso-core-release-2.0.jar- L'interfaccia
IdlingResourceè stata spostata in una libreria separata:espresso-idling-resource-release-2.0.jar CountingIdlingResourceora si trova inespresso-contrib-release-2.0.jar(come avrebbe dovuto essere sempre)
- La dipendenza facoltativa (guava) è stata rimossa dall'API pubblica per
supportare il reimpacchettamento della dipendenza guava ed evitare la collisione DEX (una delle principali
cause di problemi di sviluppo). I metodi interessati includono quanto segue:
ViewAssertion.check()HumanReadables.getViewHierarchyErrorMessage()
Nuove funzionalità
- Azioni
ViewActionsreplaceText()openLink()- Scorri verso l'alto e verso il basso
- espresso-contrib
RecyclerViewActions: Gestisce le interazioni conRecyclerViewsPickerActions: gestisce le interazioni con i selettoriDateeTime
- Matcher
RootMatchersisPlatformPopup()
ViewMatchersisJavascriptEnabled()withSpinnerText()withHint()isSelected()hasLinks()
LayoutMatchers: Matcher per il test del layout correlato a i18nCursorMatchers: una raccolta di matcher per gli oggettiCursor
- Asserzioni
PositionAssertions, inclusiisLeftOf()eisAbove(): raccolta diViewAssertionsper controllare la posizione relativa degli elementi sullo schermoLayoutAssertions: Asserzioni per il test del layout correlato a i18n
- Test app: molte nuove attività/test di esempio
- Altro
Espresso.unregisterIdlingResources()eEspresso.getIdlingResources(): offre maggiore flessibilità per lavorare conIdlingResourcesViewInteraction.withFailureHandler(): Consente di ignorare il gestore degli errori daonView()- Supporto di
onData()perAdapterViewscon il supporto diCursorAdapters
Correzioni di bug
ViewMatchers.isDisplayed()corrisponde alle visualizzazioni che occupano l'intero schermo, ma non sono più visualizzate per meno del 90%- L'esecuzione dell'azione di scorrimento per
DrawerActions.openDrawer()non comporta piùIdlingResourceTimeoutException
Altre modifiche importanti
- Passaggio dalla creazione con Maven a Gradle
- Le dipendenze di Espresso (Guava, Dagger, Hamcrest) sono state spostate per evitare collisioni DEX
- Modificato per restituire esito positivo o negativo durante la registrazione e l'annullamento della registrazione delle risorse inattive
- Supporto di Lollipop: inserisci
message.recycle()dietro un'interfaccia per tenere conto delle modifiche relative alla versione - È stato impostato il livello SDK target su 21, il che influisce principalmente sull'app di test
Versione 1.1 (data di rilascio: 08/01/2014)
espresso
- Nuovi
swipeLefteswipeRightViewActions - Supporto della funzionalità Multi-finestra: una funzionalità avanzata che consente di scegliere la finestra di destinazione in cui Espresso deve eseguire l'operazione
- Miglioramenti a
TypeTextAction: consente di digitare testo in una visualizzazione pre-messa a fuoco, il che semplifica l'aggiunta di testo - Numerose correzioni di bug
Libreria Espresso Contrib
- Questa nuova libreria contiene funzionalità che integrano Espresso, ma non fanno parte della libreria principale
- Nuovo
DrawerActionsper l'operazione suDrawerLayout: ha una dipendenza dalla libreria di supporto Android, pertanto la manteniamo al di fuori della libreria Espresso principale
Test di esempio
- Questi test sono stati spostati nello stesso pacchetto dell'app di test
- I POM di Maven sono stati corretti per rimuovere le dipendenze guava duplicate, quindi
mvn installora dovrebbe funzionare