今回の記事では、エスプレッソを利用して、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をテストしてみました。
参考
- サンプルコードは、GitHubにあります
- Developers: Espresso
Related Posts
- Android - FusedLocationProviderClientに位置情報を取得する
- Android - GPS、Network位置情報を取得する(LocationManager)
- Android - adbコマンドでActivity実行
- アンドロイド - MediaStoreにメディアファイルを保存する方法
- Android - Runtime permissionリクエスト方法と例(kotlin)
- Android11 - Storage(ストレージ)の変更まとめ
- Jetpack Compose - RowとColumn
- Android 13 - 細かいメディアファイルの権限
- Android 13でNotification権限をリクエスト、通知を表示する
- エラー解決:android gradle plugin requires java 11 to run. you are currently using java 1.8.
- Query method parameters should either be a type that can be converted into a database column or a List
- Android - TabLayoutの実装方法(+ ViewPager2)
- Android - adbコマンドで特定のパッケージのプロセスの終了
- Android - adb push、pullでファイルのコピー、ダウンロード
- Android - adbコマンドでsettings value確認、変更、
- Android 12 - IntentFilterのexported明示的な宣言
- Android - adb logcatコマンドでログ出力
- Android - ACTION_BOOT_COMPLETEDイベント受信
- Android - Foreground Service実行
- Android - ファイル入出力の例(Read、Write、内部、外部ストレージ)
- Android - アプリの権限を確認(Permission check)
- Android - adbで実行中のプロセス、スレッドリスト及びメモリ情報の確認
- Android - Broadcast Receiver登録およびイベントの受信方法
- Android - Cleartext HTTP ... not permitted例外解決方法
- Androidのビルドエラー - Calls to Java default methods are prohibited in JVM target 1.6
- アンドロイド - Assetsでファイルを読み取る方法
- アンドロイドのさまざまなNotification種類と実装方法
- アンドロイド - INSTALL_FAILED_TEST_ONLYエラー解決方法
- Android EspressoのCustom Matcher実装方法
- Android Espressoを使用してUIをテストする方法(3)
- アンドロイド - CTS hostsideをgradleで構築する方法
- Androidのアプリのデータフォルダーのパスと内部/外部ストレージ説明
- アンドロイド - 最初のApp作成
- Androidをインストールする方法(Windows)