Android Espressoを使用してUIをテストする方法(3)

今回の記事では、エスプレッソを利用して、EditTextをテストするコードに対して調べてみます。

Android Espressoを使用してUIをテストする方法(2)に続く3番目の行です。

このページの内容は非常に短く、プロフェッショナルをAndroid Espressoを使用してUIをテストする方法(2)に移動しました。

SecondActivityテストコードの作成

SecondActivityはMainActivityとほぼ同じです。 MainActivityにEXTRAが「korea」でハードコーディングされているが、SecondActivityはEditTextを介して入力を受けて伝達するということは異なります。

androidTestフォルダにSecondActivityTest.ktを作成して、基本的な内容を入力します。

@RunWith(AndroidJUnit4::class)
class SecondActivityTest {
    @Rule
    @JvmField
    var activeRule = ActivityTestRule(SecondActivity::class.java)

}

最初のテスト

人が手でEditTextに「korea」を入力し、目で結果を確認する単純作業をコードに代わりしようとします。

以下のようにコードを入力すると、EditTextに「korea」を入力して... 正しい結果が返されていることを確認することができます。

perform(typeText(inputStr)は引数として渡された変数をEditTextに入力するよう意味します。 closeSoftKeyboard()はSoftKeyboardが開いている場合閉じという意味です。

FABボタンを押すと、LocaleActivityが実行なりますよ。このとき、適切なLocaleが出力されていることを確認します。

OKボタンが押されるとMainActivityにLocale情報を含むインテントが配信されます。 MainActivityはこのインテントを受けて結果を出力してくれます。 出力が意図したとおりいることを確認します。

@Test
fun userInputTest() {
    val context = InstrumentationRegistry.getInstrumentation().targetContext

    val inputStr = context.getString(R.string.country_korea)
    onView(withId(R.id.editTextUserInput))
            .perform(typeText(inputStr), closeSoftKeyboard())

    onView(withId(R.id.fab))
            .perform(click())

    onView(withId(R.id.tvLocale))
            .check(matches(withText(R.string.locale_korea)))

    onView(withId(R.id.btnOk))
        .perform(click())

    onView(withId(R.id.tvResultLocale))
        .check(matches(withText(R.string.locale_korea)))
}

まとめ

Espressoを利用して、EditTextがあるUIをテストしてみました。

参考

Related Posts

codechachaCopyright ©2019 codechacha