今の時代テストを書いて、CDしないといけないよねって雰囲気があるので、勉強してみます。
https://developer.android.com/training/testing/ui-testing/espresso-testing.html
と、言いつつもこのページを読んで燃え尽きました。
インストール
新規でつくると最新のAndroidStudioなら、プリセット通りで動きます。便利な時代になりました。
既存の場合は以下を追加すればできるかと思います。
dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
}
テストファイルをつくるときは、プリセット通りにやる場合はandroidTestディレクトリ配下につくります。
core
基本的なView(TextViewとかImageView)はonViewで、AdapterView(ListViewとかGridView)はonDataで操作を行います。
以下の例の場合だと、my_viewに対して、clickを行い、my_viewが表示されているか判定を行います。
onView(withId(R.id.my_view)) // withId(R.id.my_view) is a ViewMatcher
.perform(click()) // click() is a ViewAction
.check(matches(isDisplayed())); // matches(isDisplayed()) is a ViewAssertion
Viewに対しての操作の種類は"Performing Actions"の項に書いています。
matcherはこちらのリファレンスを見てください。
intents
intentを投げることもできます。
これによりextraで別画面に何かしらのデータを送ることができます。
dependencies {
// core -> intents
androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
}
webview
webviewのテストもできるみたいです。
googleのsample
https://github.com/googlesamples/android-testing/tree/master/ui/espresso/WebBasicSample
Elementを指定して、いくつかのアクションをすることができるので、テストをすることができます。
dependencies {
// core -> web
androidTestCompile('com.android.support.test.espresso:espresso-web:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
}
おわりに
結構簡単にできますね。
ただ、基本的にUIテストはユーザーの入力に対して、何かしらの出力をするときに使うのであって、画面の遷移とか切り替わるとかで使う必要はなさそうですね。
使う機会があまり思い浮かばない。サンプルがもっと転がってるといいのですが。
あと、そもそもesspressoって、CDに対応してるんでしょうか。。。