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;
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!")))
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.