Ich versuche RecyclerView mit AndroidJunit4 zu testen, es ist mein Testcode:
%Vor%Hier ist mein Code für displayProducts () in Aktivität:
%Vor%Es gibt Fehler wie:
%Vor%Bitte helfen Sie, was ist das Problem in meinem Code?
Der Grund dafür ist, dass Ihr Espresso-Test nicht lange auf Ihre Ladeaufgabe gewartet hat.
Sie müssen ein espresso-idling-resource
verwenden, um es zu warten, bis diese Aufgabe abgeschlossen ist.
Dann brauchen Sie eine Klasse, um IdlingResource
zu implementieren und sie als Ihre Aktivität zu deklarieren.
Wenn Ihr Espresso-Test läuft, wird er Ihre langwierige Aufgabe kennen und warten, um das Ergebnis zu vervollständigen und zu testen.
Fügen Sie zuerst seine Abhängigkeit hinzu.
%Vor% Zweitens brauchen Sie zwei Java-Dateien im Ordner src / main / java / your-package.
SimpleCountingIdlingResource.java
EspressoIdlingResource.java
%Vor%Ok. Lass uns zur Aktivität gehen, wo du eine zeitraubende Aufgabe hast. Erstens, stellen Sie diese Methode auf den Boden.
%Vor%In Ihrer zeitraubenden Aufgabe. Sie sollten Ihrem Espresso sagen, dass er so warten soll.
%Vor%Abschließend definieren Sie diese Methoden in Ihrer UI-Testklasse.
%Vor%Ja. Endlich sind wir fertig.
Es gibt ein Problem, das ich hier sehen kann. Sie fragen die Listengröße, bevor der Main / UI-Thread sie aktualisieren kann. Sie müssen also im aktuellen Thread warten, bis die Aktivität die Aktualisierung der Liste im Hauptthread abgeschlossen hat.
Sie können,
%Vor%in der zu wartenden Klasse Test, um das Verhalten der Listeneinstellung in Activity zu testen, und Sie werden feststellen, dass die Assertion gültig ist.
Da der Hauptthread unendlich lange läuft, bis die Anwendung ausgeführt wird, müssen Sie eine Callback-Schnittstelle implementieren, die von der Aktivität bereitgestellt wird, um darüber informiert zu werden, wann das Auffüllen der Liste beendet ist.
Tags und Links android unit-testing android-adapter android-junit