【问题标题】:FragmentScenario of DialogFragment, onCreateDialog not calledDialogFragment的FragmentScenario,onCreateDialog未调用
【发布时间】:2021-01-01 01:08:47
【问题描述】:

我想使用 androidx.fragment:fragment-testing lib 测试 DialogFragment。 我调用了launchFragmentInContainermoveToState(Lifecycle.State.RESUMED),但是这个片段中没有调用onCreateDialog

    @Test
    fun `submit search - presenter state is changed`() {
        val p: PinCatsPresenter = F.presenter(PinCatsPresenter.COMPONENT_ID)!!

        launchFragmentInContainer<PinCatsDialog>().let { scenario ->
            scenario
                .moveToState(Lifecycle.State.RESUMED)
                .onFragment { fragment ->
                    assertFalse(p.state.isFiltered)

                    fragment.dialog!!.findViewById<SearchView>(R.id.search_field).let {
                        it.isIconified = false
                        it.setQuery("ea", true)
                    }
                    awaitUi()
                    assertTrue(p.state.isFiltered)
                    assertEquals(3, p.state.count)
                }
        }
    }

我调试了应用,确保onCreateDialog被调用早于onResume,但是在这个测试场景中onCreateDialog没有被调用,所以fragment.dialog是空的。

我应该在FragmentScenario 上调用什么来创建我的对话框?

【问题讨论】:

    标签: android android-dialogfragment androidx-test


    【解决方案1】:

    这在official documentation 中有描述。我们需要调用launchFragment 而不是launchFragmentInContainer

       launchFragment<PinCatsDialog>().let { scenario ->
           scenario
               .moveToState(Lifecycle.State.RESUMED)
               .onFragment { fragment ->
                   // Code here
               }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      相关资源
      最近更新 更多