0

我正在使用 robolectric 并将我的支持片段更新为 androidx 片段。这意味着将使用 FragmentController<> 的测试更新为推荐的 FragmentScenario。

使用 FragmentController,我可以启动它,然后我可以调用controller.get()以获取实际的片段并直接对其进行操作,进行公开调用。有没有办法用 FragmentScenario 做到这一点,并直接访问 androidx.Fragment 实例?

我想直接调用公共方法的原因是因为包含 Fragment 的 Activity 侦听 Intent,并在其包含的 Fragment 上调用方法,我想测试它的关联行为。

4

1 回答 1

0

答案是使用FragmentScenario.onFragment()。这使您可以直接在片段的 UI 线程上执行操作,为您提供对片段的引用。

例如

FragmentScenario<MyCustomFragment> controller = FragmentScenario.launch(MyCustomFragment.class);

controller.onFragment(fragment -> {
    fragment.myCustomFragMethod1();
    fragment.myCustomFragMethod2();
}

// assertions here, testing that myCustomFragMethod1() worked.
于 2020-05-15T10:48:35.097 回答