Mit Robolectric wird Code getestet, der eine Aktivität startet

8

Ich habe einen Code, den ich mit Robolectric testen möchte. Grundsätzlich möchte ich testen, dass ein Buttonklick eine Aktivität startet.

HomeScreenFragment.java:

%Vor%

Mein Test sieht so aus: HomeSreenFragmentTest.java:

%Vor%

Das Problem, das ich habe, ist mit dem Test. Der Code selbst funktioniert gut in Emulator / auf Gerät. Das Problem ist, dass wenn Robolectric die Methode performClick() ausführt und dann zu onClick() geht, dann zu startActivity(intent) geht, schlägt es fehl.

Stapelverfolgung:

%Vor%

Ich weiß, wie man eine Aktivität mit Robolectric mit der Methode Robolectric.buildActivity() startet. Aber das ist, wenn ich eine Aktivität beim Testen brauche . Warum kann Robolectric die Methode startActivity() nicht im Code ausführen? Gibt es eine bessere Möglichkeit, das zu testen?

    
tir38 18.10.2013, 16:20
quelle

1 Antwort

8

Sie sollten auch .start().resume() auf Ihrem ActivityController aufrufen, nicht nur .create() Dies bewirkt, dass das Fragment ebenfalls erstellt wird.

Wenn Sie das oben genannte tun, müssen Sie onCreateView nicht selbst aufrufen. Sie können die Schaltfläche nur aus der Aktivität abrufen, indem Sie mHomeScreenActivity.findViewById(R.id.sign_in_button);

verwenden

Im Allgemeinen vermute ich, dass Ihr Code fehlschlägt, weil das Fragment noch nicht vollständig gestartet wurde, weil Sie start() und resume()

nicht aufgerufen haben     
Jeroen 26.10.2013, 10:47
quelle

Tags und Links