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.
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:
Seit API Level 11 ist der ActivityManager.isRunningInTestHarness () Methode ist verfügbar. Dies könnte tun, was Sie wollen.
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%Tags und Links android unit-testing instrumentation