从FragmentController转向FragmentScenario。

问题描述 投票:0回答:1

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

使用FragmentController,我可以启动它,并且我可以调用 controller.get() 来获取实际的fragment并直接操作它,进行公共调用。有没有一种方法可以用FragmentScenario,直接访问androidx.Fragment实例?

我之所以想直接调用一个公共方法,是因为包含Fragment的Activity监听一个Intent,并在其包含的fragment上调用一个方法,我想测试这个的相关行为。

android android-fragments robolectric android-fragmentscenario
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.
© www.soinside.com 2019 - 2024. All rights reserved.