[android] 010. 自動テスト関連 (メモ)

app crawler

App StoreやFirebaseの自動テスト中にも動作しているそうで、手動で実行もできます
ログの見方はよくわからない…とりあえずクラッシュしなければいいのかな?
https://developer.android.com/studio/test/other-testing-tools/app-crawler

Emulatorなどデバイスにインストールしているアプリをテストする場合は以下

java -jar crawl_launcher.jar java --android-sdk C:\Users\(USER)\AppData\Local\Android\Sdk --app-package-name (packagename) 

Monkey Test

ランダム操作テスト
オプション指定でいろいろ制御できるけど、とりあえずテストしたい場合は以下を実行
https://developer.android.com/studio/test/other-testing-tools/monkey

adb shell monkey -p your.package.name -v 500

Record Espresso Test

残念ながらJetpack Composeを使用している場合はRecord Espresso Testは利用できないっぽいです
https://stackoverflow.com/questions/78056928/record-espresso-test-option-is-not-enabled-in-android-studio

Jetpack Compose対応されたら以下が参考になるかも

https://developer.android.com/studio/test/other-testing-tools/espresso-test-recorde
https://developer.android.com/training/testing/espresso
https://dena.github.io/codelabs/android-ui-tests-basic/#0

Jetpack Compose UI Test

Jetpack ComposeでUI Testする場合は以下を参照
https://developer.android.com/develop/ui/compose/testing
https://developer.android.com/codelabs/jetpack-compose-testing

コードラボは以下
Cloneがタイムアウト?で失敗するみたいなのでzipで取得(ダウンロード結構時間かかりました…
https://github.com/android/codelab-android-compose

android Testの方にUI Testを実装

テンプレートのGreeting表示のテスト

@get:Rule
val composeTestRule = createAndroidComposeRule(MainActivity::class.java)
@Test
fun myTest() {
    composeTestRule.onNodeWithText("Hello Androd!").assertIsDisplayed()
}

パラメータを変えてみる

@get:Rule
val composeTestRule = createComposeRule()

@Test
fun myTest() {
    composeTestRule.setContent {
        Greeting("Test")
    }
    composeTestRule.onNodeWithText("Hello Test!").assertIsDisplayed()
}

Android Studio Koala 2024.1.1 Patch 1 built on July 11, 2024