5

Wie kann ich eine IntentService in Android ohne die veraltete ServiceTestCase testen?Wie IntentService Android testen?

Aus der Dokumentation des ServiceTestCase:

Diese Klasse wurde in API-Ebene veraltet 24. Verwenden ServiceTestRule statt. Neue Tests sollten mit der Android Testing Support Library geschrieben werden.

Aber die ServiceTestRule Dokumentation sagt, dass es nicht IntentService s unterstützt:

Hinweis: Diese Regel nicht unterstützt IntentService, weil sie automatisch zerstört wird, wenn onHandleIntent (android.content.Intent) beendet alle noch offenen Befehle. Es kann also nicht garantiert werden, dass eine erfolgreiche Verbindung rechtzeitig hergestellt wird.

Wie soll ich dann eine IntentService testen?

Antwort

4

Die service testing page in der Android-Dokumentation sagt (Hervorhebung von mir):

Hinweis: Die ServiceTestRule Klasse nicht Prüfung von IntentService Objekten unterstützt. Wenn Sie ein IntentService-Objekt testen müssen, sollten Sie Sie die Logik in einer separaten Klasse kapseln und stattdessen einen entsprechenden Komponententest erstellen.

Also die offizielle Antwort scheint zu sein "verwenden Sie stattdessen einen Komponententest." Da ServiceTestCase jedoch veraltet ist, bedeutet dies nicht, dass Sie es nicht weiter verwenden können. Es wird lediglich davon abgeraten. Wenn die Verwendung einer veralteten Schnittstelle der einzige (oder effizienteste) Weg ist, um Ihr Ziel zu erreichen, sollten Sie es weiterhin verwenden.