androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0'
androidTestImplementation 'androidx.test:rules:1.1.0'
androidTestImplementation 'androidx.test:runner:1.1.0'
@RunWith(AndroidJUnit4::class)
class HomeActivityTest {
@get: Rule
val homeActivityTest = ActivityTestRule(HomeActivity::class.java)
@Test
fun test() {
Thread.sleep(1000)
}
}
@Test
fun name_Validate_Test() {
onView(withId(R.id.editName)).perform(typeText("Kim Seok-woo"))
onView(withId(R.id.editName)).perform(clearText())
onView(withId(R.id.nameValidation)).check(matches(isDisplayed()))
Thread.sleep(1000)
}
@get: Rule
val myIntentActivityTest = IntentsTestRule(MyIntentActivity::class.java)
val resultData = Intent()
val packageItem = PackageItem(
name = "Kim", detail = "Bag", count = 3,
company = "Com", phone = "01000000000", trackingNumber = "123456789"
)
resultData.putExtra("register", packageItem)
// Result Code와 Intent Setup
val result = Instrumentation.ActivityResult(Activity.RESULT_OK, resultData)
// startActivityForResult를 사용하기 위한 Context
val context = InstrumentationRegistry.getInstrumentation().context
intending(hasComponent(MyIntentActivity::class.java.name)).respondWith(result)
myIntentActivityTest.activity.startActivityForResult(Intent(context, MyIntentNextActivity::class.java), REQUEST_CODE)
espresso 패키지에서 제공하는 메서드들이 Test Class 작성시 자동 import되지 않는 경우가 상당히 많아서, 공식사이트나 블로그에서 테스트 코드를 가져와서 써도 빨간색으로 경고가 뜬다. 그래서 수동으로 import해야하는 경우가 많은데 상당히 골치 아프다.