Wie testen Sie Application Klasse mit Robolectric?

8

Ich versuche die Push-Benachrichtigung mit Parse.com mit Robolectric zu testen. Da die Initialisierung in einer Application-Klasse durchgeführt werden muss, muss ich sie testen. Bis jetzt funktioniert die App gut mit Emulator, aber ich kann es nicht mit Robolectric testen.

My onCreate der Anwendungsklasse:

%Vor%

Test

%Vor%

StackTrace

%Vor%     
Sahil Dave 20.06.2014, 04:06
quelle

2 Antworten

7

Sie sollten die Parse-API in eine Klasse umbrechen und sich über sie lustig machen:

%Vor%

Ändern Sie Ihre App:

%Vor%

Ändern Sie Ihre Test-App und Tests:

%Vor%

Dies sollte funktionieren, wenn ich während der Eingabe keinen Fehler mache.

Natürlich ist das eine ungefähre Idee. Es ist besser, eine Scheinbibliothek zu verwenden, anstatt anonyme Klassen in Tests zu schreiben (Mein Favorit ist Mockito ). Bitte lesen Sie auch über Abhängigkeitsinversion und -injektion ( IoC ). Und schließlich ist es viel besser, die Robolectric-Testanwendung von den Anwendungstests zu trennen (bitte lesen Sie Ссылка )

    
Eugen Martynov 24.06.2014, 09:05
quelle
2
%Vor%

Dies sollte ein Test-Set oder eine Testsuite sein, nicht die tatsächliche Klasse, die Sie testen.

Für jeden Test müssen Sie die Application-Klasse instanziieren. Eigentlich macht Robolectric das für Sie, wenn Sie die Application-Klasse in Ihrem Manifest richtig deklariert haben, und Sie können die aktuelle Anwendungsinstanz (mit erweiterten Testmöglichkeiten) von robolectric api: getShadowApplication () beziehen.

    
S.D. 24.06.2014 09:33
quelle

Tags und Links