16

Meine App besteht aus einem Activity für viele Fragments.Android Espresso: Wie teste ich ein bestimmtes Fragment, wenn ich einer Aktivität zu mehreren Fragment-Architektur

Ich möchte Espresso verwenden, um die Benutzeroberfläche der Fragments zu testen. Ich bin jedoch auf ein Problem gestoßen.

Wie kann ich eine Fragment testen, die nicht zu einer Activity in onCreate hinzugefügt wird. Alle Beispiele, die ich mit gesehen habe, schließen die Fragment ein, die in onCreate hinzugefügt wird. Also, wie kann ich Espresso sagen zu einem bestimmten Fragment gehen und von dort aus starten?

Dank

Antwort

0

Espresso kann Fragments Test nur, wenn sie angezeigt werden. Und das erfordert, dass sie von einer Activity angezeigt werden.

Mit Ihrem aktuellen Setup müssen Sie Espresso zu click() Ihre Weise (wie ein Benutzer würde) zu der Fragment, die Sie tatsächlich testen möchten.

In einem meiner Projekte habe ich eine ViewPager, die Fragments anzeigt. Für diese Fragments verwende ich eine benutzerdefinierte FragmentTestRule, um sie isoliert zu testen. Ich kann jede direkt starten und Espresso verwenden, um es zu testen. Siehe this answer.

Sie könnten auch:

  • nicht Fragments anwenden. Activities sind einfacher zu testen. Sie können jede Activity für sich testen. In den meisten Fällen bieten Fragments keinen Vorteil gegenüber Activities. Fragments machen nur die Implementierung und das Testen schwieriger.
  • Aktivieren Sie Ihre FragmentActivity, um eine bestimmte Fragment direkt anzuzeigen, wenn es erstellt wird. Z.B. indem Sie eine spezielle Absicht extra an Ihre FragmentActivity liefern. Aber das würde Ihrer App Testcode hinzufügen, was im Allgemeinen keine gute Lösung ist.
+15

Verwenden Sie keine Fragmente ?? –

+0

[FragmentTestRule] (https://github.com/21Buttons/FragmentTestRule) ist eine Implementierung der verknüpften Antwort. –

+7

Fragmente laden schneller als Aktivitäten (sie können sogar vorab in den Speicher geladen werden), sie ermöglichen die Modularisierung und Wiederverwendung von Komponenten und müssen nicht im Vollbildmodus angezeigt werden (sie können wie jede andere Ansicht in einem Layout platziert werden)). Fragmente sind sehr beliebt, weil sie eine Aktivität sehr verbessern. Das Sagen von Fragmenten, die keinen Vorteil bieten, ist unglaublich ungenau, und der Nutzen, sie zu verwenden, überwiegt die Testschwierigkeit bei weitem. – OldSchool4664

Verwandte Themen