Si yo:
- Cree un nuevo proyecto de Android Studio 3.5.1 (Kotlin, API 21, plantilla "Actividad vacía")
- Ejecuta la aplicación desde el IDE
- Confirme que la aplicación está instalada y tiene un ícono de inicio
- Ejecute la
connectedAndroidDebugTest
tarea Gradle (desde Android Studio o víagradlew
)
La aplicación termina siendo desinstalada por la prueba de funcionamiento. Obtengo ese comportamiento incluso si agrego un testApplicationId
valor para defaultConfig
que el código de prueba use una ID de aplicación diferente.
¿Cómo detengo ese comportamiento? ¿Cómo puedo ejecutar pruebas instrumentadas desde la línea de comandos, sin perturbar la instalación de una aplicación existente?
android
android-gradle-plugin
CommonsWare
fuente
fuente
Respuestas:
La
connectedCheck
tarea tiene el tipoDeviceProviderInstrumentTestTask
. Para una prueba simple ejecutada en un dispositivo, usa aSimpleTestRunner
, que a su vez usa aSimpleTestRunnable
para ejecutar realmente la prueba. Aquí encontrarás una estructura deNo estoy completamente seguro de haber encontrado las implementaciones más recientes, pero este comportamiento exacto se remonta a varios años. Así que supongo que no puedes lograr lo que estás pidiendo.
fuente
Tal vez intente ejecutarlo de
adb
esta manera:adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
No desinstalará su aplicación.
aquí se describe con más detalles.
fuente
createDebugCoverageReport
, de la cual dependeconnectedAndroidDebugTest
. Por lo tanto, no puedo evitarconnectedAndroidDebugTest
, salvo reescribir de alguna manera elcreateDebugCoverageReport
.am instrument
opciones de comando adb que puede usaram instrument
. Y puede ejecutar un informe de cobertura a través de adb con la ayuda de laemma
opción establecida entrue
. También puede cambiar un archivo de destino del informe de cobertura con la ayuda de lacoverageFile
opción. Espero eso ayude.La instrumentación instala 2 APK: el APK bajo prueba y el APK con el código de prueba.
También desinstala ambos APK antes de intentar instalar los nuevos y no sé si es posible evitar la desinstalación.
testApplicationId
solo cambia el ID de la aplicación para el APK con el código de prueba (que normalmente es el mismo que para el APK principal con ".test" adjunto), el ID de la aplicación del APK bajo prueba sigue siendo el mismo. Pero es posible crear buildType por separado para el APK bajo prueba (con exactamente la misma configuración que el tipo de compilación de depuración) y usarlo.Entonces
connectedAndroidXYZTest
podría usarse para ejecutar las pruebas (ocreateXYZCoverageReport
).fuente
XYZ
en cuenta el tipo de compilación con ese código.BuildConfig
clase.