如何在生命周期方法中测试代码?

时间:2018-07-19 12:11:08

标签: java android junit kotlin mockito

我有这样的东西:

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。

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

1 个答案:

答案 0 :(得分:0)

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

@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))
    }

欢迎任何建议;)