Ist es möglich, Android-Dienste unter Unit-Tests zu verspotten?

8

Ich versuche Komponententests für meine Android-Anwendung zu schreiben, und ich möchte meine Serviceklasse verspotten. Ich möchte einige Fehlerverhalten im Dienst testen, z. B. Verbindungsfehler oder Datei nicht gefunden.

Um meine Frage zu vereinfachen, habe ich ein neues Android-Projekt gestartet und eine Aktivitäts- und eine Serviceklasse erstellt:

MyAndroidProjectActivity.java

%Vor%

MeinService.java

%Vor%

Und ich habe ein neues Android-Testprojekt mit dieser Einheitenklasse erstellt:

MyAndroidProjectActivityTest.java

%Vor%

Wenn ich die Komponententests durchführe, sind die Vorbedingungen und die Change-Button-Tests in Ordnung. Ich möchte zum Beispiel einen MyServiceMock erstellen und MyService.getNewString überschreiben, um einen anderen Wert zurückzugeben, und dieses Objekt im Test vortäuschen.

In etwa so:

MeinServiceMock.java

%Vor%

Ist das möglich?

    
Sigrist 28.09.2011, 13:04
quelle

1 Antwort

3

Ja, das ist möglich und ich denke, das Beispiel der MyServiceMock.java oben ist auch eine Alternative.

Es gibt ein paar spöttische Frameworks, die Sie dafür verwenden können.

Ich habe etwas Erfahrung mit Mockito .

Sie können nur die MyService-Klasse vortäuschen und angeben, dass beim Aufruf der getNewString-Methode ein String "Dies ist der neue Wert!" zurückgegeben wird.

%Vor%

Sie können auch die Methode Mockito.doThrow () verwenden, um eine Ausnahme auszulösen, wenn eine Mock-Methode aufgerufen wird:

%Vor%     
walters 18.09.2012, 11:00
quelle