Wenn ich:
- Erstellen Sie ein brandneues Android Studio 3.5.1-Projekt (Kotlin, API 21, Vorlage "Leere Aktivität").
- Führen Sie die App in der IDE aus
- Vergewissern Sie sich, dass die App installiert ist und über ein Startsymbol verfügt
- Führen Sie die
connectedAndroidDebugTest
Gradle-Aufgabe aus (in Android Studio oder übergradlew
)
Die App wird beim Testlauf deinstalliert. Ich erhalte dieses Verhalten auch dann, wenn ich einen testApplicationId
Wert hinzufüge defaultConfig
, damit der Testcode eine andere Anwendungs-ID verwendet.
Wie stoppe ich dieses Verhalten? Wie kann ich instrumentierte Tests über die Befehlszeile ausführen, ohne eine vorhandene App-Installation zu stören?
android
android-gradle-plugin
CommonsWare
quelle
quelle
Antworten:
Die
connectedCheck
Aufgabe hat den TypDeviceProviderInstrumentTestTask
. Für einen einfachen Testlauf auf einem Gerät wird a verwendetSimpleTestRunner
, das wiederum a verwendetSimpleTestRunnable
, um den Test tatsächlich auszuführen. Hier finden Sie eine Struktur vonIch bin mir nicht ganz sicher, ob ich die neuesten Implementierungen gefunden habe, aber dieses genaue Verhalten reicht mehrere Jahre zurück. Ich denke, Sie können nicht erreichen, wonach Sie fragen.
quelle
Versuchen Sie es vielleicht
adb
so:adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner
Ihre App wird nicht deinstalliert.
hier wird es ausführlicher beschrieben.
quelle
createDebugCoverageReport
, die davon abhängtconnectedAndroidDebugTest
. Also kann ich es nicht vermeidenconnectedAndroidDebugTest
, das irgendwie neu zu schreibencreateDebugCoverageReport
.am instrument
, mit denen Sie arbeiten könnenam instrument
. Und Sie können einen Bericht über die Abdeckung mit Hilfe deremma
Option auf adb erstellentrue
. Sie können auch eine Zieldatei des Abdeckungsberichts mithilfe dercoverageFile
Option ändern . Ich hoffe es hilft.Die Instrumentierung installiert 2 APKs: die zu testende APK und die APK mit dem Testcode.
Außerdem werden beide APKs deinstalliert, bevor versucht wird, die neuen zu installieren, und ich weiß nicht, ob es möglich ist, die Deinstallation selbst zu verhindern.
testApplicationId
Ändert nur die Anwendungs-ID für die APK mit dem Testcode (der normalerweise dieselbe ist wie für die Haupt-APK mit angehängtem ".test"). Die Anwendungs-ID der zu testenden APK bleibt unverändert. Es ist jedoch möglich, einen separaten buildType für das zu testende APK zu erstellen (mit genau der gleichen Konfiguration wie der Debug-Build-Typ) und diesen zu verwenden.Dann
connectedAndroidXYZTest
könnte verwendet werden, um die Tests (odercreateXYZCoverageReport
) auszuführen .quelle
XYZ
Build-Typ für diesen Code zu berücksichtigen.BuildConfig
Klasse zu generieren .