UI Automatorは、minSDKVersionが17以下だと使えない。
ただ、UIテストの時だけminSdkVersionを18以上をすれば、UI Automatorは使える。
その設定方法を説明する。
設定方法
1. UI Automatorを導入する
「app/build.gradle」に以下を記述する。
dependencies {
...
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
...
}
2. テスト用のAndroid Manifestを追加する
「app/src/androidTest/AndroidManifest.xml」に以下を記述する。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="<your app's package name>">
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="28"
tools:overrideLibrary="android_libs.ub_uiautomator" />
</manifest>
3. テストアプリのビルド時にテスト用のAndroid Manifestを参照させる
「app/build.gradle」に以下を記述する。
android {
sourceSets {
androidTest {
manifest.srcFile 'src/androidTest/AndroidManifest.xml'
}
}
}
sourceSetsの記述はやや注意。
テスト用のAndroidManifest.xmlの追加時、Android StudioがsourceSetsの記述を自動で生成する。
自分の場合は、プロダクトコードのAndroid Manifest.xmlとなるような記述になっていた。
その場合は、自動生成された箇所を消して、上のように記述すればOK。
備考
この設定をすると、当然、SDK Versionが17以下でUIテスト実行できなくなる。
ただ、UITestをSDK Version17以下でも動くようにするよりも、断然おすすめ。
UI Automatorがあると、Espressoだけ使うときよりテストコードが簡潔になるため。
後、SDKVersion 17(Android 4.2)はさすがに古すぎるので、そもそもサポート対象から外した方が良いかと。