Ist es möglich, herauszufinden, ob eine Android-Anwendung als Teil eines Instrumentierungstests ausgeführt wird?

8

Gibt es eine Laufzeitprüfung für eine Anwendung, um herauszufinden, ob sie als Teil eines Instrumentierungstests ausgeführt wird?

Hintergrund: Unsere Anwendung führt beim Starten eine Datenbanksynchronisierung durch. Aber das sollte nur passieren, wenn es regelmäßig gestartet wird. Es stört insbesondere die Instrumentierungstests, die die db sync testen. Nicht überraschend.

Und bei all den anderen Tests ist es nur eine Verschwendung von CPU-Zyklen.

    
Martin 21.07.2011, 13:18
quelle

5 Antworten

2

Wenn Sie ActivityUnitTestCase verwenden, können Sie ein benutzerdefiniertes Anwendungsobjekt mit setApplication festlegen und ein Flag zum Aktivieren oder Deaktivieren der Datenbanksynchronisierung verwenden? Es gibt ein Beispiel für die Verwendung eines benutzerdefinierten Anwendungsobjekts in meinem Blog:

Ссылка

    
Paul Butcher 22.07.2011, 16:09
quelle
5

Seit API Level 11 ist der ActivityManager.isRunningInTestHarness () Methode ist verfügbar. Dies könnte tun, was Sie wollen.

    
scompt.com 26.03.2012 11:03
quelle
3

Eine viel einfachere Lösung besteht darin, nach einer Klasse zu suchen, die nur in einem Testklassenpfad vorhanden ist, mit JUnit 4 zu arbeiten (im Gegensatz zur Lösung mit ActivityUnitTestCase) und keine benutzerdefinierten Absichten an Ihre Aktivitäten / Dienste zu senden in manchen Fällen sogar nicht möglich)

%Vor%     
Yannick Menager 24.04.2016 23:03
quelle
1

Sie können eine zusätzliche Absicht an Ihre Aktivität weitergeben, die anzeigt, dass sie getestet wird.

1) Übergeben Sie in Ihrem Test "testMode" extra an Ihre Aktivität:

%Vor%

2) Suchen Sie in Ihrer Aktivität nach testMode:

%Vor%     
Eduard 31.05.2015 05:41
quelle
0

Dies funktioniert für mich, weil kein Gerät läuft

%Vor%     
Allen Chan 03.03.2017 02:33
quelle