-
Fragment Container Testing개발/Android 2022. 9. 6. 23:26
Android Programming The Big Nerd Ranch Guide 5th를 학습하며 책에 기재된 Challenge에 대한 답을 기록한다.
문제는 FragmentContainer로 만들어진 Fragment에 대한 테스트 케이스를 작성하는 것.
package com.wookhyun.criminalintent import androidx.fragment.app.testing.FragmentScenario import androidx.fragment.app.testing.launchFragmentInContainer import androidx.fragment.app.testing.withFragment import androidx.lifecycle.Lifecycle import androidx.test.core.app.ActivityScenario import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.action.ViewActions.typeText import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.ext.junit.runners.AndroidJUnit4 import org.junit.Assert.* import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class CrimeDetailFragmentTest{ lateinit var fragmentScenario: FragmentScenario<CrimeDetailFragment> @Before fun setUp() { fragmentScenario = launchFragmentInContainer<CrimeDetailFragment>( initialState = Lifecycle.State.RESUMED ) } @After fun tearDown() { fragmentScenario.close() } @Test fun test(){ onView(withId(R.id.crime_solved)).perform(click()) fragmentScenario.onFragment{fragment -> assertEquals(true, fragment.crime.isSolved) } } @Test fun testEditText(){ onView(withId(R.id.crime_title)).perform(typeText("Hello")) fragmentScenario.onFragment{fragment -> assertEquals("Hello", fragment.crime.title) } } }
물론 다른 방법도 있겠지만 다음과 같이 풀었다
'개발 > Android' 카테고리의 다른 글
Material Theme Color System (0) 2023.05.31 Android DateFormat (0) 2022.09.13 RecyclerView ViewType 분기 (0) 2022.09.12 [Android] 프레그먼트 추가 및 삭제(뒤로가기 버튼) (0) 2021.10.27 [Android] 뒤에 있는 프레그먼트 이벤트 작동 안되게 하기 (0) 2021.10.27