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?
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);
Im Allgemeinen vermute ich, dass Ihr Code fehlschlägt, weil das Fragment noch nicht vollständig gestartet wurde, weil Sie start()
und resume()
Tags und Links java android robolectric