DeNA Testing Blog

Make Testing Fun, Smart, and Delighting End-Users

Android Test Night #8を開催しました

こんにちは。SWETのAndroidチームに所属している外山(@sumio_tym)です。

2023/03/10にAndroid Test Night #8を開催しました。 約3年ぶりのオフライン開催で、懇親会も実施しました(同時にオンラインでも配信しました)!

本記事では、今回の発表のスライドを紹介していきます*1

聴衆の反応

Android Test Night #8 で盛り上がっている様子にtweetをまとめました。

発表スライド紹介

@STAR_ZERO「Coroutines Test 入門」

1つめは@STAR_ZEROさんによるKotlin Coroutineが関係するテストの書き方についての発表でした。

suspend関数のテスト、メインスレッドの差し替え方法、Flowのテスト例が簡潔にまとめられており、とても参考になりました。 ついつい忘れてしまいがちなStandardTestDispatcherUnconfinedTestDispatcherの違いや、テストスケジューラの時間制御の方法などが具体例と共に説明されているので、あとから見直すのもよいかもしれません。

@mr_mkeeda「Compose で手に入れた UI の Unit test」

2つめは@mr_mkeedaさんによるCmpose UIのユニットテストについての発表でした。

AndroidにおけるUIのテストは典型的にはInstrumented Testで行いますが、Compose UIのユニットテストであればRobolectricでも安定して動作するとのことでした。 ComposeのテストをRobolectricで動かす場合、RobolectricによってShadow(Robolectricが用意したFake実装)に置き換えられるのはCanvasにとどまるため、テストライブラリへの影響が少ないとの解説が目から鱗でした。

@swiz_ard「KMMのCI/CD」

3つめは@swiz_ardさんによるKMM (Kotlin Multiplatform Mobile)におけるCI/CD構築についての発表でした。

KMMでは、Android・iOSのネイティブコードとKMM共有コードの依存関係を解決する手段として、モノレポ・git submodule・パッケージマネージャーと、それぞれ利害得失が異なる3つの選択肢があるとのことです。 発表では、当初git submoduleが採用されていたプロジェクトを、パッケージマネージャーに移行した事例が紹介されていました。 自分も(KMMではありませんが)git submoduleの扱いには日々苦労させられているため、デメリットが大きくなって移行したという話にはとても共感しました。

懇親会

発表終了後、オフライン参加者で懇親会を開催しました。 参加者同士でたっぷり話せるように2時間確保していたのですが、話題に尽きることなくあっという間に2時間が終わってしまいました!

終わりに

登壇して下さった皆さん、参加して下さった皆さんのお陰で、無事Android Test Night #8を終えることができました。どうもありがとうございました。 Android Test Nightは、今後も定期的にイベントを開催する予定です。 また次回お会いしましょう!

また、SWETグループではAndroidに限らずテストの自動化やCI/CDに興味があり、私達と一緒に働いてくれる仲間を募集しています。ご応募お待ちしています!

*1:録画も公開したかったのですが、Zoomの設定ミスにより録画に失敗していました