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 de diciembre de 2018)
Esta es la versión estable de AndroidX Test 1.1.0
- Principal
- ActivityScenario admite actividades que inician otra actividad
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 (12 de junio de 2018)
- Principal
- Nuevo artefacto de extensión core-ktx kotlin. Incluye una API de ActivityScenario.launchActivity compatible con Kotlin.
- Nueva API de ActivityScenario para iniciar actividades con intents personalizados.
- Nueva API de ActivityScenario para recibir un resultado de Activity.
- Ahora es posible cerrar ActivityScenario.
- Espresso
- Modifica withResourceNameMatcher y HumanReadables para que sean compatibles con la API nivel 28.
- Actualiza la descripción de ReplaceTextAction para incluir stringToBeSet.
- Compatibilidad con Espresso en el modo de generador de bucles de Robolectric en pausa.
- JUnit
- Nueva API de ActivityScenarioRule, para iniciar y cerrar automáticamente un elemento Activity en la configuración de prueba y desconexión.
- Nuevo artefacto de extensión junit-ktx de Kotlin. Incluye una API de ActivityScenarioRule compatible con Kotlin.
- Runner
- Se hizo posible que -e package y -e testFile tengan un comportamiento coherente al recibir paquetes.
- Truth
- Agrega las API de BundleSubject bool, parcelable y 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 de octubre de 2018)
- Todas
- Se estableció minSdkVersion en 14 y targetSdkVersion en 28.
- Espresso
- Arregla withContentDescription para que funcione con tipos sin strings.
- Se agregó compatibilidad para usar Espresso en Robolectric.
- Problema 72798625: Espresso ViewMatchers.withText no funciona si textAllCaps está habilitado.
- Agrega compatibilidad para insertar una secuencia de eventos de movimiento.
- Intents
- Se agregó la API Beta para recuperar la lista de intents, a fin de usarla con nuevas aserciones de verdad.
- Runner
- Agrega compatibilidad para apps instantáneas.
- Dejó de estar disponible androidx.test.runner.AndroidJUnit4 y se lo reemplazó por androidx.test.ext.junit.runners.AndroidJUnit4.
- Supervisar
- Dejó de estar disponible androidx.test.InstrumentationRegistry y se lo reemplazó por androidx.test.platform.app.InstrumentationRegistry y androidx.test.core.app.ApplicationProvider.
- AndroidTestOrchestrator
- Solo se habilita el control de la cobertura de Orchestrator si se pasan los argumentos "coverage" y "coverageFilePath".
- Solo se espera al depurador cuando se establece -debug, pero no para enumerar los casos de prueba de ATO. Se agregó una nueva marca de orchestratorDebug para depurar Orchestrator.
- Principal
- Nuevo artefacto que incluye nuevas API que admiten pruebas locales y en el dispositivo para lo siguiente:
- Recuperar contexto: ApplicationProvider
- Controlar ciclos de vida de actividad: ActivityScenario(Beta)
- Compiladores para MotionEvent, PackageInfo
- Clase de utilidad Parceables
- Nuevo artefacto que incluye nuevas API que admiten pruebas locales y en el dispositivo para lo siguiente:
- Truth
- Nuevo artefacto que incluye temas de verdad personalizados para Notification, Intent, Bundle, Parcelable y MotionEvent.
- JUnit
- Nuevo artefacto que incluye la clase de runner JUnit androidx.test.ext.junit.runners.AndroidJUnit4, que admite pruebas locales y en el 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 de abril de 2018)
- Espresso
- Cambio rotundo en la API:
- Se nos indicó en el problema 64062890 que estábamos usando Guava Optional en nuestra API pública, lo que fue un descuido grave de nuestra parte. En consecuencia, se realizó un cambio rotundo en la API de esa versión para solucionar el problema. Colocamos un wrapper Ugly en la clase de Guava Optional, llamada EspressoOptional, que se encuentra bajo el espacio de nombres "android.support.test.espresso.util". Los desarrolladores que utilizaban la API de Guava Optional filtrada deben cambiar sus importaciones y referencias para usar EspressoOptional durante la actualización de esta nueva versión. Lamentamos las molestias que esto haya ocasionado.
- Las API de onView() y onData() ahora tienen la marca @CheckReturnValue para evitar errores.
- Se corrigió el archivo POM de espresso-core para que no genere dependencia de las "reglas"; en lugar de eso, la generan los POM de espresso-intents. Esto debería ser un cambio de NoOp para los desarrolladores, ya que no se pueden usar los espresso-intents sin espresso-core.
- Problema 65486414: Falta la dependencia de Guava en Espresso.
- Problema 65576174: Espresso IdlingResourceRegistry.sync provoca que falle la segunda prueba.
- Problema 65568629: Espresso.onIdle no utiliza IdlingRegistry.
- Problema 69333598: Espresso 3.0.1 no es compatible con play-services-auth:11.6.0 en el módulo de la biblioteca de Android.
- Problema 64062890: La interfaz de AdapterViewProtocol expone un tipo opcional interno.
- Problema 64091847: Espresso 3.0.0 NO debería depender del ejecutor de prueba.
- Problema 73722050: espresso-contrib 3.0.2-alpha1 empaqueta las clases android.arch.{lifecycle/core}.
- Cambio rotundo en la API:
- Espresso-remote
- Este es un artefacto nuevo. Desacoplamos toda la funcionalidad de múltiples procesos de Espresso fuera del artefacto espresso-core. Esto es más sencillo y debería reducir significativamente el tamaño general y la cantidad de métodos de espresso-core.
- Runner
- Trunca el seguimiento de pila si es demasiado grande para una transacción de Binder. Dado que AJUR debe informar las fallas a AM a través de un IPC de Binder, debemos asegurarnos de no superar el límite de transacción de Binder, que es de 1 MB por proceso.
- Problema 65828576: Se produce una falla de TestRequestBuilder al ejecutar la prueba en clase con @Ignore.
- Problema 37057596: No manejamos fallas en @BeforeClass.
- Reglas
- Asegúrate de publicar una referencia sobre la actividad que se está probando después de los cambios en el ciclo de vida. Durante la prueba, ahora es posible manipular Activity directamente usando la referencia obtenida de #getActivity(). Si finaliza Activity y se vuelve a iniciar, la referencia que muestra #getActivity() siempre apuntará a la instancia actual de Activity.
- Problema 64389280: GrantPermissionRule no proporciona WRITE_EXTERNAL_STORAGE.
- Problema 37065965: ActivityTestRule pierde actividad después del cambio de orientación.
- Problema 75254050: ActivityTestRule no actualiza la instancia de Activity durante los cambios de configuración.
- Problema 64464625: No se puede hacer que la IU funcione en el método finish() de Activity.
- AndroidTestOrchestrator
- Pasa marcas
-e coverage true -e coverageFilePath /sdcard/foo/
para generar archivos de cobertura en la ubicación determinada (la app debe tener permiso para escribir en la ubicación determinada). La convención de nombres de archivos de cobertura ahora tiene este aspecto:com.foo.Class#method1.ec
. Ten en cuenta que esta función solo se admite cuando se ejecuta en modo aislado. Además, no se puede usar junto con la marcacoverageFile
de AndroidJUnitRunner, ya que los archivos de cobertura generados se reemplazan entre sí. - Pasa la marca
-e clearPackageData
si deseas que Orchestrator ejecute los comandospm clear context.getPackageName()
ypm clear targetContext.getPackageName()
entre invocaciones de prueba. Ten en cuenta que el contexto en el comando clear es la app en contexto de prueba. - Solucionado: Al ejecutar una prueba vacía, también conocida como no @Test dentro del objetivo, el resultado de la prueba es diferente al modo heredado.
- Problema 72758547: Test Orchestrator hace que los datos de cobertura de Jacoco estén incompletos; solo tiene los datos de la última prueba.
- Problema 67916042: Se detuvo la ejecución de Android Test Orchestrator al fallar el proceso debido a OutOfMemory.
- Problema 77752735: Orchestrator falla para TransactionTooLargeException.
- Problema 77549481: Test Orchestrator debería ejecutar "pm clear" después de cada prueba.
- Pasa marcas
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (5 de diciembre de 2017)
Espresso
Intents
ahora tiene una respuesta a la que se puede llamar, lo que permite que las pruebas se ejecuten después de capturar un intent activado, pero antes de mostrar un objetoInstrumentation.ActivityResult
.
Runner
Divide el artefacto Maven
com.android.support.test:monitor:<version>
del monitor para usuarios que necesitanMonitoringInstrumentation
sin ejecutar pruebas ni funciones de JUnit.Si usas
com.android.support.test:runner:<version>
, todo funciona de manera esperada, porque Gradle extrae automáticamente el módulomonitor
como una dependencia del módulorunner
.Se agregó la marca
newRunListenerOrderMode
. Cuando seatrue
, los objetos de escucha definidos por el usuario se ejecutarán antes que los predeterminados. (Esperamos que este comportamiento se convierta finalmente en el predeterminado).Problema 65828576: Falla
TestRequestBuilder
al ejecutar pruebas en una clase anotada con@Ignore
(independiente y sin funciones de ejecución de prueba o JUnit).
AndroidTestOrchestrator
- Ahora controla las pruebas vacías de la misma manera que
AndroidJUnitRunner
sin Orchestrator. - Orchestrator ahora puede manejar resultados estándar muy grandes desde
AndroidJUnitRunner
.
- Ahora controla las pruebas vacías de la misma manera que
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28 de agosto de 2017)
Espresso
- Se agregó la opción
IdlingPolicy
para suprimironTimeout()
cuando se adjunta un depurador de pasos a la VM. - Problemas 64024656, 64247586 y 64525881: no informes fallas por la carga incorrecta de clases, a menos que un usuario esté cargando clases específicas incluyendo el argumento de Runner de clase
-e
. - Problema 64877246: agrega las clases que faltan al archivo JAR de origen.
- Se agregó la opción
Runner
- Lógica de
ShardingFilter
simplificada - Problema 65025743: el filtro
@RequiresDevice
ahora admite emuladores de FTL
- Lógica de
AndroidTestOrchestrator
- No dupliques las fallas del informe. Cuando falle un proceso de prueba después de un error, ahora solo se informará un error para la prueba.
- Se corrigió Javadoc para Orchestrator.
- Las pruebas ahora se indican como perdidas si falla el proceso remoto.
- Ahora maneja casos de prueba ignorados.
- Ahora excluye los casos de prueba ignorados del pie de página para que coincidan con los resultados heredados.
- Se corrigieron los problemas relacionados con los permisos de tiempo de ejecución. En Android 7.0 (nivel de API 24) o posteriores, los informes de prueba ahora se escriben en la tarjeta SD.
Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25 de julio de 2017, Anuncio)
Cambios rotundos
- Todos los artefactos
- Se dio de baja la compatibilidad con niveles de API inferiores a 15; sin embargo, el SDK mínimo todavía orienta a la API nivel 9 a fin de darles tiempo a los usuarios para actualizar.
- Espresso
- Se borró la clase
android.support.test.espresso.contrib.CountingIdlingResource
obsoleta y se movió aandroid.support.test.espresso.idling.CountingIdlingResource
.- Usa
getInstance().register()
en lugar deregisterIdlingResources()
.
- Usa
- Guava ahora está separado en un espacio de nombres "interno" diferente: si accidentalmente usas la API de Guava a través de espacios de nombres de Espresso, es posible que veas fallas.
- Quita cualquier referencia a Guava sombreado (
.core.deps.guava.
). - Actualiza tu versión de la biblioteca de compatibilidad a 25.4.0 o versiones posteriores.
- Quita cualquier referencia a Guava sombreado (
- Se borró la clase
Errores conocidos
- AndroidTestOrchestrator
- Actualmente, no se admiten los argumentos
-e numShards
y-e shardIndex
. - Actualmente, no se admiten las pruebas parametrizadas.
- Actualmente, no se admiten los argumentos
Funciones nuevas
- Espresso
- Nueva compatibilidad con Multiprocess Espresso en la API nivel 26 para
espresso-core
yespresso-web
, pero no paraespresso-contrib
- Nueva API liviana de
IdlingRegistry
- Se publicó como parte de
com.android.support.test.espresso:espresso-idling-resource:3.0.0
- Métodos obsoletos:
- Se publicó como parte de
- Nueva API para ayudar a sincronizar
Executors
- Nuevo artefacto Maven:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0
- Contiene las clases
IdlingScheduledThreadPoolExecutor
yIdlingThreadPoolExecutor
- Nuevo artefacto Maven:
- Nueva API para ayudar a sincronizar las solicitudes y respuestas de la red
- Nuevo artefacto Maven:
com.android.support.test.espresso.idling:idling-net:3.0.0
- Contiene la clase
UriIdlingResource
- Nuevo artefacto Maven:
- Nuevos comparadores de vistas
espresso-core
:hasBackground()
coincide con el recurso de elementos de diseño en segundo plano del objetoView
hasTextColor()
coincide con el color de un objetoTextView
- Nuevos métodos de acción de vista:
- Acción de vista
scrollTo()
mejorada para funcionar con derivados deListView
repeatedlyUntil()
: realiza la acciónViewAction
determinada en una vista hasta que esta coincida con los objetosViewMatchers
deseados
- Acción de vista
- Nuevos métodos de Espresso:
pressBackUnconditionally()
: similar apressBack()
, pero no arroja ninguna excepción cuando navega EspressonoActivity()
: quita la necesidad de esperar una actividad antes de realizar unaViewAction
o unaViewAssertion
onIdle()
: repite el subproceso principal hasta que la app quede inactivaonIdle(Callable<T>)
: igual queonIdle()
, pero toma un objetoCallable
adicional como parámetro, que se ejecuta después de que la app queda inactiva
webScrollIntoView()
: nuevo átomo deespresso-web
que te permite desplazarte dentro de unaWebView
- Nueva compatibilidad con Multiprocess Espresso en la API nivel 26 para
- Ejecutor
-
InterceptingActivityFactory
ySingleActivityFactory
: Ofrece la posibilidad de probar una actividad aislada del mundo exterior anulando métodos comostartService()
ysendBroadcast()
. -
Agrega compatibilidad para usar JUnitParams con
AndroidJUnitRunner
. -
Comienza a controlar
@UiThreadTest
en el nivel del ejecutor de pruebas principal y deja de estar disponible@UiThreadTestRule
. Esto permite el uso de la anotación@UiThreadTest
directamente en los métodos anotados con@Before
y@After
. -
La anotación
@SdkSupress
ahora admite el valormaxSdkVersion
(problema 37067792). -
-e classLoader
: Proporciona la capacidad de pasar cargadores de clases usando argumentos de Runner. -
-e filter
: Agrega compatibilidad para filtros JUnit personalizados que se especificarán utilizando argumentos de Runner. -
-e runnerBuilder
: Permite que los desarrolladores proporcionen sus propias implementaciones deRunnerBuilder
que pueden determinar si pueden ejecutarse en una clase específica y de qué manera.
-
- Reglas
ProviderTestRule
: nueva API para probar objetosContentProvider
getActivityResult()
yActivityResultMatchers
: nueva API para recuperar el resultado de una actividad que llamó asetResult()
- AndroidTestOrchestrator
- Android Test Orchestrator ofrece una nueva forma de recopilar y ejecutar pruebas, con énfasis en la corrección y el aislamiento. Orchestrator es un proceso de instrumentación independiente que genera un proceso de corredor de Runner para cada prueba y recopila los resultados.
- Las fallas de la aplicación eliminan la instrumentación de Runner, pero no de Orchestrator, lo que permite que el conjunto de pruebas continúe.
- Requiere instalar el APK de Orchestrator:
'com.android.support.test:orchestrator:1.0.0'
. - La versión 1.0 solo tiene una interfaz de línea de comandos; se planea la integración con Android Studio y Firebase Test Labs.
- Android Test Orchestrator ofrece una nueva forma de recopilar y ejecutar pruebas, con énfasis en la corrección y el aislamiento. Orchestrator es un proceso de instrumentación independiente que genera un proceso de corredor de Runner para cada prueba y recopila los resultados.
Correcciones de errores
- Espresso
- Se mejoró la sincronización de vista raíz para reducir significativamente la inestabilidad
- Se corrigió la corrupción de
IdlingResourceRegistry
- Se mejoró la sincronización con objetos
IdlingResource
- Problema 37132680: Espresso no espera a que se complete la creación del diálogo antes de realizar la siguiente acción
- Problema 37103280: Espresso debe enviar las reglas del consumidor de ProGuard para que los consumidores no tengan la obligación de agregarlas
- Problema 37094726: Espresso Intents contiene una etiqueta de aplicación innecesaria
- Problema 37093953: no hay verificación disponible para el texto de error nulo o vacío en Espresso
- Problema 37071776:
espresso-core
incorpora los archivos.pom
de Guava - Problema 37062612: NPE en
release()
- Problema 37063389: al tener Guava y
espresso-web
como dependencias deandroidTest
, no se realiza la compilación - Problema 37070533: se agregó compatibilidad con
NavigationView
en la biblioteca de compatibilidad de diseño de Android
- Ejecutor
-
Se corrigió la capacidad de usar
@UiThreadTest
en combinación con@Test(timeout = 123)
. - Se corrigieron argumentos de ejecutor
-e notClass
. - Se corrigió
-e log
para admitir los paquetes de pruebas JUnit3 y JUnit4, además de los runnersParameterized
yEnclosed
. - Problema 37663530: Espera a que finalicen todas las actividades antes y después de cada método de prueba.
- Problema 37132680: Espresso no espera a que se complete la creación del diálogo antes de realizar la siguiente acción.
-
Problema 37123213: Se ignora
@RequiresDevice
en ABI x86_64. -
Problema 37101485: Se ignoran algunos argumentos proporcionados por manifiesto para
AndroidJUnitRunner
, como el tamaño de la prueba, la anotación y la depuración. - Problema 37082857: Falla la ejecución de prueba semiparalela de Espresso en objetos estáticos.
-
Problema 37063396: No se inicializa el contexto con
ProviderTestCase2
(causaNullPointerException
).
-
Se corrigió la capacidad de usar
- Reglas
- Se corrigió el ciclo de vida de
ActivityTestRule
para unificar el comportamiento en la inicialización regular y lenta deActivityTestRule
- Problema 37079943: se corrigió
ServiceTestRule
para permitir la revinculación - Problema 37109342: se agregaron
getActivityResult()
yActivityResultMatchers
- Se corrigió el ciclo de vida de
- UiAutomator
setUiAutomationFlags()
para usar conUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
: esto permite usarUiAutomator
mientras se ejecutan otros servicios de accesibilidad- Problema 37082813:
setText()
en objetosEditText
vacíos arrojaNullPointerException
si la API es de nivel 19 o inferior
Otros cambios destacados
- Los objetos binarios ahora se publican a través de Google Maven.
- Se redujo el tamaño de los archivos JAR
espresso-core
yespresso-web
; las dependencias incorporadas ahora tienen ProGuard aplicado. - Todos los archivos
.aar
ahora incluyen reglas de ProGuard. - Se agregaron archivos
proguard_library.cfg
a los artefactos actualizados. - La interfaz de
Tapper
tiene una nueva versión desendTap()
para implementar.
Contribuciones externas
- Espresso
- Runner
- Reglas
Espresso 2.2.2, Runner/Rules 0.5 (22 de febrero de 2016, lanzamiento silencioso)
Funciones nuevas
- espresso
- Problema 194253: se agregó compatibilidad con NavigationView en la biblioteca de diseño de compatibilidad de Android
- Comprobaciones adicionales para animaciones y transiciones habilitadas
- Nueva API de
ViewMatcher
:withResourceName()
Correcciones de errores
- espresso
- Problema 195331: espresso-core incorpora los archivos pom de Guava
- Se quitó el recurso de conteo inactivo de espresso-contrib
- rules
- Problema 187249: NPE en
Intents.release()
- Problema 187249: NPE en
- runner
- Problema 196066: el argumento
-e log true
enAndroidJUnitRunner
no omite la prueba real - Espera al depurador en
onCreate()
del ejecutor - Se quitaron todas las anotaciones de prueba compatibles de la plataforma y se colocaron en ATSL.
- Se quitó el volcado de seguimiento de pila acerca de JSBridge.
- Se corrigió
AndroidAnnotatedBuilder
.
- Problema 196066: el argumento
Otros cambios destacados
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
yServiceTestRule
están fuera de la versión beta.- Se agregó un archivo de configuración de estilo de código para un formato de código uniforme.
Espresso 2.2.1, Runner/Rules 0.4 (15 de septiembre de 2015)
Funciones nuevas
- rules
- Se agregó un nuevo constructor
IntentsTestRule
para que sea totalmente compatible conActivityTestRule
.
- Se agregó un nuevo constructor
- runner
- Se agregó la instalación multidex de casos especiales para los niveles de API 15 e inferiores.
- Se agregaron filtros de exclusión a clases y paquetes:
- Se ejecutan todas las pruebas, excepto las de una clase particular:
adb shell am instrument -w -e notClass com.android.foo.FooTest
. - Se ejecutan todas las pruebas, excepto una:
adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
. - Se ejecutan todas las pruebas, excepto un paquete en particular:
adb shell am instrument -w -e notPackage com.android.foo.bar
.
- Se ejecutan todas las pruebas, excepto las de una clase particular:
Contribuciones externas
- espresso
- 157911: se agregó un comparador de vistas para el tipo de entrada en un objeto
EditText
. - 157912: se agregó un comparador de vistas para hacer coincidir el texto del error en un objeto
EditText
. - 150674: se agregó compatibilidad con
DrawerActions
para paneles laterales con gravedad arbitraria. - 150744: las acciones
DrawerActions
ya no filtranparentListener
. - 153303: se especificó la gravedad en las verificaciones "is the drawer open or closed".
- 157910: se agregaron fábricas de acción de apertura y cierre de
DrawerLayout
.
- 157911: se agregó un comparador de vistas para el tipo de entrada en un objeto
Correcciones de errores
- espresso
ViewActions.closeSoftKeyboard()
ahora garantiza que el teclado en pantalla desaparezca por completo.- Se solucionó un problema de sincronización con el método
Espresso.pressBack()
de Espresso en el nivel de API 21 y en niveles superiores. - Se corrigió la sincronización para animaciones de cierre de teclado en el nivel de API 23.
- rules
- Se corrigió
ServiceTestRule
en el nivel de API 23; siempre se debe llamar astartService()
con unIntent
explícito.
- Se corrigió
- runner
- Se corrigió la compatibilidad con
JaCoCo
de Gradle. - Se corrigió la compatibilidad con fragmentación de prueba dañada.
- Se corrigió el estado inconsistente en el Runner de prueba después de que termina el tiempo de espera de la prueba de estilo
JUnit3
.
- Se corrigió la compatibilidad con
Otros cambios destacados
- Se implementaron correcciones de Javadoc y mejoras de los mensajes de error.
- Se ignoran los métodos
suite()
, pero no los errores de inicio al usar filtros de métodos.
Espresso 2.2/ATSL 0.3 (9 de junio de 2015)
Funciones nuevas
- espresso-web 2.2
- Nueva compatibilidad con
WebView
- Nueva compatibilidad con
- espresso-core 2.2
- Se migró para usar dagger v2
- Se migró para usar hamcrest v1.3
- espresso-contribu 2.2
- Comprobaciones de accesibilidad
- Compatibilidad con gravedad de
DrawerActions
- rules 0.3
- Regla
DisableOnAndroidDebug
- Regla
- runner 0.3
- Actualización de JUnit v4.10 a JUnit v4.12
- Se migró para usar Hamcrest v1.3
Correcciones de errores
- Se corrigió el problema por el que
DrawerActions
filtrabaParentListener
. - Ahora se tratan las fallas de suposición como una prueba ignorada en lugar de como una prueba fallida.
- Se corrigió el problema por el que
MonitoringInstrumentation
filtraba instancias de actividad enExecutorService
. - Se solucionó el problema por el que se bloqueaban las actividades huérfanas en la etapa detenida.
- Se actualizó
Until.scrollFinished()
para que muestre resultados verdaderos si no se generaron eventos de desplazamiento. Se ofrece protección contra NPE potenciales enUiObject2#setText()
.
Espresso 2.1, Test Runner/Rules 0.2 y UIAutomator 2.1.0 (21 de abril de 2015)
Cambios rotundos
- Se dividió en dos el artefacto del runner de prueba y se cambió el nombre de
com.android.support.test:testing-support-lib:0.1
acom.android.support.test:runner:0.2
ycom.android.support.test:rules:0.2
.
Funciones nuevas
- espresso-intents: Es una API similar a Mockito que habilita las pruebas herméticas entre actividades, ya que permite que los autores de las pruebas verifiquen y cancelen los intents salientes de stub
IntentsTestRule
: extiendeActivityTestRule
, se inicializa y lanza Espresso-Intents en pruebas de IU funcionales
- espresso-core
ViewActions
: se agregó la capacidad de ejecutar aserciones globales antes de ejecutar acciones (esto es útil para otros marcos de trabajo que se basan en Espresso a fin de validar el estado de la jerarquía de vistas mientras se ejecuta el paquete existente de pruebas de Espresso)- Sobrecarga de
ViewMatchers.withContentDescription()
resId
- rules
ActivityTestRule
: esta regla proporciona pruebas funcionales de una sola actividad- Anotaciones
UiThreadRule
yUiThreadTest
: esta regla permite que se ejecute el método de prueba anotado conUiThreadTest
en el subproceso principal de la app (o subproceso de IU) ServiceTestRule
: esta regla proporciona pruebas funcionales de un servicio
- runner
ApplicationLifecycleCallback
: devolución de llamada para supervisar eventos del ciclo de vida de la aplicación- Todos los argumentos Runner ahora también se pueden especificar en el archivo del manifiesto de Android utilizando una etiqueta
<meta-data>
- UIAutomator
UiDevice.dumpWindowHierarchy()
ahora puede aceptar un objetoFile
oOutputStream
Correcciones de errores
- espresso
- El comparador de cursor ahora muestra
false
si no se encontró la columna para que Hamcrest pueda pasar al siguiente cursor. - Ya no se produce
NullPointerException
conPreferenceMatchers
withTitle
. - Cancelar el registro del recurso inactivo ya no hace que Espresso piense que tenemos recursos inactivos ocupados.
- Se actualizó la versión de las anotaciones de compatibilidad utilizadas por Espresso Contrib.
- El comparador de cursor ahora muestra
- runner
AndroidJUnit4
ahora omite las pruebas con suposiciones fallidas.
- UIAutomator
- Ejecuta controladores para evitar
StaleObjectException
.
- Ejecuta controladores para evitar
Otros cambios destacados
- Se agregó un mensaje de error más adecuado para cuando no podemos escribir texto con una string no latina.
UIAutomator 2.0 (12 de marzo de 2015)
UIAutomator ahora se basa en la instrumentación de Android, y puedes crear y ejecutar pruebas con el comando ./gradlew connectedCheck
.
Espresso versión 2.0, Test Runner 0.1 (lanzado el 19 de diciembre de 2014)
Cambios rotundos
- Se trasladó Espresso a un nuevo espacio de nombres, de
android.support.test.espresso
aandroid.support.test.espresso
. - Se cambió el nombre de los artefactos Espresso:
espresso-1.1.jar
ahora esespresso-core-release-2.0.jar
.- Se trasladó la interfaz
IdlingResource
a una biblioteca separada:espresso-idling-resource-release-2.0.jar
. CountingIdlingResource
ahora reside enespresso-contrib-release-2.0.jar
(donde debería haber estado siempre).
- Se quitó Optional (una dependencia de Guava) de la API pública para admitir el reempaquetado de la dependencia de Guava y evitar la colisión DEX (una fuente importante de problemas de desarrollo). Entre los métodos afectados, se incluyen los siguientes:
ViewAssertion.check()
HumanReadables.getViewHierarchyErrorMessage()
Funciones nuevas
- Acciones
ViewActions
replaceText()
openLink()
- Deslizar el dedo hacia arriba y abajo
- espresso-contribu
RecyclerViewActions
: maneja interacciones conRecyclerViews
.PickerActions
: maneja interacciones con selectores deDate
yTime
.
- Comparadores
RootMatchers
isPlatformPopup()
ViewMatchers
isJavascriptEnabled()
withSpinnerText()
withHint()
isSelected()
hasLinks()
LayoutMatchers
: comparadores de pruebas de diseño relacionadas con i18nCursorMatchers
: una colección de comparadores para objetosCursor
- Aserciones
PositionAssertions
, por ejemplo,isLeftOf()
oisAbove()
: colección deViewAssertions
para verificar la posición relativa de los elementos en la pantallaLayoutAssertions
: aserciones para pruebas de diseño relacionadas con i18n
- App de prueba: muchas actividades o pruebas de muestra nuevas
- Otro
Espresso.unregisterIdlingResources()
yEspresso.getIdlingResources()
: proporciona flexibilidad adicional para trabajar conIdlingResources
ViewInteraction.withFailureHandler()
: permite anular el controlador de fallas deonView()
- Compatibilidad con
onData()
paraAdapterViews
respaldadas porCursorAdapters
Correcciones de errores
ViewMatchers.isDisplayed()
coincide con vistas que ocupan toda la pantalla, pero de las que ya no se muestra menos del 90%.- Realizar una llamada de acción de deslizamiento a
DrawerActions.openDrawer()
ya no produce una excepciónIdlingResourceTimeoutException
.
Otros cambios destacados
- Se pasó de compilar con Maven a Gradle.
- Se quitaron las dependencias de Espresso (Guava, Dagger, Hamcrest) para evitar las colisiones con DEX.
- Se realizaron modificaciones para mostrar un mensaje de registro o de cancelación de registro de recursos inactivos que puede ser positivo o negativo.
- Compatibilidad con Lollipop: se colocó
message.recycle()
detrás de una interfaz para justificar los cambios relacionados con la versión. - Se cambió el nivel del SDK objetivo a 21, lo que afecta principalmente a la app de prueba.
Versión 1.1 (lanzada el 8 de enero de 2014)
Espresso
- Incluye las acciones
ViewActions
swipeLeft
yswipeRight
. - Compatibilidad con Multiventana: es una función avanzada que permite elegir la ventana de destino en la que Espresso debe ejecutar la operación.
- Mejoras de
TypeTextAction
: permite escribir texto en una vista preenfocada, lo que facilita agregar texto. - Incluye varias correcciones de errores.
Biblioteca de Espresso Contrib
- Esta nueva biblioteca contiene funciones que complementan Espresso, pero no son parte de la biblioteca principal.
DrawerActions
nuevas para operar enDrawerLayout
: depende de la biblioteca de compatibilidad de Android, por lo que la mantenemos fuera de la biblioteca principal de Espresso.
Pruebas de muestra
- Se reubicaron estas pruebas para incluirlas en el mismo paquete que la app de prueba.
- Se corrigieron los POM de Maven a fin de quitar los duplicados de Guava, por lo que
mvn install
ahora debería funcionar.