【问题标题】:How to test code inside lifecycle method?如何在生命周期方法中测试代码?
【发布时间】:2018-07-19 12:11:07
【问题描述】:

我有这样的事情:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    tabLayout.setupWithViewPager(pager)

    val inProgressEventPlannerListFragment = EventPlannerListFragment.newInstance(false)
    val archiveEventPlannerListFragment = EventPlannerListFragment.newInstance(true)

    baseFragmentPagerAdapter = BaseFragmentPagerAdapter(
            this, pager,
            arrayOf(BaseFragment.getStr(R.string.inProgress), BaseFragment.getStr(R.string.archive)),
            inProgressEventPlannerListFragment, archiveEventPlannerListFragment)
}

我想为此编写测试以确保存档片段将放置在具有存档页面名称的适配器中。

我可以使用 Mockito / Roboelectric 或只使用 jUnit。

感谢您提供任何建议/代码示例。

【问题讨论】:

    标签: java android junit kotlin mockito


    【解决方案1】:

    经过一些尝试,我做了这样的事情:

    @RunWith(RobolectricTestRunner::class)
    @Config(constants = BuildConfig::class)
    class EventPlannerMainFragmentTest {
    
        @Mock
        lateinit var context: Context
    
        @Before
        fun setUp() {
            MockitoAnnotations.initMocks(this)
            Mockito.`when`(context.getString(R.string.archive)).thenReturn("Archive")
            Mockito.`when`(context.getString(R.string.inProgress)).thenReturn("In progress")
        }
    
        @Test
        fun checkFragmentsInsidePager() {
            val evenPlannerMainFragment = EventPlannerMainFragment()
    
            SupportFragmentTestUtil.startFragment(evenPlannerMainFragment, MainActivity::class.java)
    
            val fragment0 = evenPlannerMainFragment.baseFragmentPagerAdapter!!.getItem(0)
            val fragment0isArchive = fragment0.arguments!!.getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)
            val pageTitle0 = evenPlannerMainFragment.baseFragmentPagerAdapter!!.getPageTitle(0)
    
            val fragment1 = evenPlannerMainFragment.baseFragmentPagerAdapter!!.getItem(1)
            val fragment1isArchive = fragment1.arguments!!.getBoolean(EventPlanner.EVENT_PLANNER_IS_ARCHIVE)
            val pageTitle1 = evenPlannerMainFragment.baseFragmentPagerAdapter!!.getPageTitle(1)
    
            println("Fragment 0:")
            println(fragment0isArchive)
            println(pageTitle0)
    
            println("Fragment 1:")
            println(fragment1isArchive)
            println(pageTitle1)
    
            if (fragment0isArchive) assertEquals(pageTitle0, context.getString(R.string.archive)) else assertEquals(pageTitle0, context.getString(R.string.inProgress))
            if (fragment1isArchive) assertEquals(pageTitle1, context.getString(R.string.archive)) else assertEquals(pageTitle1, context.getString(R.string.inProgress))
        }
    

    欢迎任何建议;)

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多