RobolectricでAndroidXフラグメントをテストする方法
追加した testImplementation "org.robolectric:shadows-supportv4:4.0-alpha-3"
依存関係とこのコードで試してみました:
val controller = SupportFragmentController.setupFragment(
TestableFragment.buildFragment(DATA),
TestableFragmentHolderActivity::class.Java)
TestableFragment
はandroidx.fragment.app.Fragment
、およびTestableFragmentHolderActivity
はandroidx.appcompat.app.AppCompatActivity
しかし、テスト中にエラーが発生します:
Java.lang.NoSuchMethodError:org.robolectric.shadows.support.v4.SupportFragmentController.setupFragment(Landroidx/fragment/app/Fragment; Ljava/lang/Class;)Landroidx/fragment/app/Fragment;
Robolectricの最新のAPIを使用してフラグメントをテストする新しい方法があります。チェック 公式ドキュメントFragmentScenario
を作成する必要があります
val fragmentScenario = launchFragmentInContainer<MyFragment>()
エスプレッソで通常行うようにテストします
onView(withId(R.id.text)).check(matches(withText("Hello World!")))
親切にこのgitの問題を参照してください: https://github.com/robolectric/robolectric/issues/3985 。 AndroidXフラグメントの新しいAPIがまもなくリリースされます。