Se eu:
- Crie um novo projeto do Android Studio 3.5.1 (Kotlin, API 21, modelo "Atividade vazia")
- Execute o aplicativo de dentro do IDE
- Confirme se o aplicativo está instalado e possui um ícone do iniciador
- Execute a
connectedAndroidDebugTest
tarefa Gradle (de dentro do Android Studio ou viagradlew
)
O aplicativo acaba sendo desinstalado pela execução do teste. Eu recebo esse comportamento mesmo se eu adicionar um testApplicationId
valor defaultConfig
para que o código de teste use um ID de aplicativo diferente.
Como eu paro esse comportamento? Como posso executar testes instrumentados na linha de comando, sem atrapalhar a instalação de um aplicativo existente?
android
android-gradle-plugin
CommonsWare
fonte
fonte
Respostas:
A
connectedCheck
tarefa tem o tipoDeviceProviderInstrumentTestTask
. Para um teste simples executado em um dispositivo, ele usa aSimpleTestRunner
, que por sua vez usa aSimpleTestRunnable
para realmente executar o teste. Aqui você encontra uma estrutura deNão tenho muita certeza se encontrei as implementações mais recentes, mas esse comportamento exato data de vários anos. Então eu acho que você não pode conseguir o que está pedindo.
fonte
Talvez tente executá-lo via
adb
dessa maneira:adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
Não desinstalará seu aplicativo.
aqui está descrito em mais detalhes.
fonte
createDebugCoverageReport
qual dependeconnectedAndroidDebugTest
. Então, não posso evitarconnectedAndroidDebugTest
, com alguma reescrita de alguma formacreateDebugCoverageReport
.am instrument
opções de comando adb possíveis com as quais você pode usaram instrument
. E você pode executar um relatório de cobertura via adb com a ajuda daemma
opção definida comotrue
. Também é possível alterar um arquivo de destino do relatório de cobertura com a ajuda dacoverageFile
opção Espero que ajude.A instrumentação instala 2 APKs: o APK em teste e o APK com o código de teste.
Ele também desinstala os dois APKs antes de tentar instalar os novos e não sei se é possível impedir a desinstalação.
testApplicationId
altera apenas o ID do aplicativo no APK com o código de teste (normalmente o mesmo do APK principal com ".test" anexado). O ID do aplicativo no APK em teste permanece o mesmo. Mas é possível criar buildType separado para o APK em teste (com exatamente a mesma configuração do tipo de compilação de depuração) e usá-lo.Então
connectedAndroidXYZTest
poderia ser usado para executar os testes (oucreateXYZCoverageReport
).fonte
XYZ
tipo de construção em mente com esse código.BuildConfig
classe.