web-dev-qa-db-fra.com

Robolectric avec des fragments d'AndroidX

Comment tester le fragment AndroidX avec Robolectric?

J'ai ajouté la dépendance testImplementation "org.robolectric:shadows-supportv4:4.0-alpha-3" et essayé avec ce code:

val controller = SupportFragmentController.setupFragment(
            TestableFragment.buildFragment(DATA),
            TestableFragmentHolderActivity::class.Java)

TestableFragment est androidx.fragment.app.Fragment et TestableFragmentHolderActivity est androidx.appcompat.app.AppCompatActivity

Mais je reçois une erreur pendant le test:

Java.lang.NoSuchMethodError: org.robolectric.shadows.support.v4.SupportFragmentController.setupFragment (Landroidx/fragment/app/Fragment; Ljava/lang/Classe;) Landroidx/fragment/app/Fragment;

5
Ufkoku

Il existe un nouveau moyen de tester des fragments avec la dernière API de Robolectric. Vérifiez le document officiel Vous devrez créer une FragmentScenario

val fragmentScenario = launchFragmentInContainer<MyFragment>()

puis testez comme d'habitude avec Espresso

onView(withId(R.id.text)).check(matches(withText("Hello World!")))
2
Dmitry Sitnikov

Veuillez vous référer à ce problème git: https://github.com/robolectric/robolectric/issues/3985 . Une nouvelle API pour le fragment AndroidX sera bientôt publiée.

1
Sai Deepthi