Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
UIテストにおけるRxIdlerが便利だった話
Search
yu mitsuhori
July 26, 2018
Programming
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UIテストにおけるRxIdlerが便利だった話
AndroidでUIテストをするときの悩みとしてアサーション前に非同期処理を待ってくれないことがあります。RxIdlerを使うとRxJavaにおける非同期処理もいい感じに待ってくれます。
yu mitsuhori
July 26, 2018
More Decks by yu mitsuhori
See All by yu mitsuhori
【DroidKaigi版】ReactNativeとKotlinで叶える夢のリアルタイム音声配信
youmitsu
1
3.3k
ReactNativeとKotlinで叶える夢のリアルタイム音声配信
youmitsu
1
930
stand.fm(Android)におけるreact-native-track-playerの改善
youmitsu
1
2.3k
TargetSdkVersion29で BottomNavigationが点滅する件
youmitsu
1
1.7k
リリース前のリグレッションテストをUIテストで自動化、1年間運用した話
youmitsu
2
440
New features in RemoteConfig, Analytics at Google I/O 2019
youmitsu
1
780
FirebaseNotification,RemoteConfigでユーザセグメントごとにプッシュ通知を実装する
youmitsu
8
1.6k
Report from Google I/O 2019
youmitsu
1
120
OSSにコントリビュートした話
youmitsu
1
120
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
540
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
220
最近”作らせてる” ローカルAIアプリの話
akit37
0
440
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.1k
AWSに止められる覚悟してますか?
morizo_1984
2
530
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
360
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
650
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.2k
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
150
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.1k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
700
Featured
See All Featured
A better future with KSS
kneath
240
18k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
First, design no harm
axbom
PRO
2
1.3k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
RailsConf 2023
tenderlove
30
1.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Paper Plane (Part 1)
katiecoart
PRO
2
11k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
350
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Crafting Experiences
bethany
1
380
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Transcript
UI テストにおけるRxIdler が便利だった話 @1013Youmeee
アジェンダ アジェンダ 1. UI テストとは 2. UI テストのつらみ 3. よくある解決策
4. RxIdler の紹介 5. まとめ
軽く自己紹介 軽く自己紹介 三堀 裕 株式会社エムティーアイ所属 社会人2 年目 Android アプリエンジニア 外部LT
初登壇( 汗) Twitter: @1013Youmeee Qiita: GitHub: https://qiita.com/youmeee https://github.com/youmitsu
話すこと 話すこと 前提 RxJava を使ってAPI コールなどの非同期処理をし ているAndroid アプリ UI テストで、いい感じに非同期処理を待たせる
「RxIdler 」というライブラリの紹介
誰得? 誰得? Android でUI テストをやってみたいと思っている方 RxJava を使っているアプリで、UI テストでの非同期 処理に困っている方
背景 背景 仕事で担当するアプリにおいてシナリオテストを自 動化 非同期処理をうまく同期的にテストする仕組みが欲 しい Android TestNight に参加した時、DeNA のSWET
の 方にRxIdler が良いというお話を聞いたので試して みたらいい感じだった
UI テストとは UI テストとは 画面内に特定のUI コンポーネントがあるかどうか このボタンを押した後にこの画面が表示されるか などの実際に実機で操作する時のアプリの挙動をテス トできるもの
ANDROID におけるUI テスト ANDROID におけるUI テスト Android でUI テストを行う上で、主に二つの仕組み InstrumentalTest
Espresso
UnitTest のようなJVM 上で動作するテストと違い、 Android の実機でテストをする仕組み。 導入方法は以下を参照 https://developer.android.com/training/testing/ui- testing/espresso-testing
Android のUI テスト用のフレームワーク。 リソースのid などを使用したUI の取得 UI に対するアクション(タップ、スクロールなど) アサーション( 表示されているか、文字が正しいか
など) https://developer.android.com/training/testing/espre
UI テストのつらみ UI テストのつらみ API リクエストなどの非同期処理後の画面反映を待た ずに、 次のリソースの取得、アサーションに映ってしまいテ ストが失敗してしまう ※AsyncTask
やMessageQueue などは待ってくれる
具体例 具体例 @Test fun testNotWaitFailed() { /** * API */
// onView(allOf(withId(R.id.data_str), isDisplayed())) .check(matches(withText("completed"))) }
主な解決策3 つ 主な解決策3 つ 1. sleep を使って待つパターン 2. 反映されるまでリトライするラッパークラスを作る パターン
3. UI の状態で判断するパターン(IdlingResources) Idling Resources についてはこちらを参照
どのパターンもそれぞれ辛い... 辛い理由はQiita に載せます
本題 本題 ~そこでRxIdler ~
の概要 の概要 Square 製のライブラリ(Jake) IdlingResources をラップしている RxJava の非同期処理をしている別スレッド上の処 理をしているとき、IdlingResource をincrement
及 びdecrement する 単純な宣言 https://github.com/square/RxIdler
インストール インストール に以下を記述 androidTestImplementation 'com.squareup.rx.idler:rx2-idler:0.9.0'
コード例 コード例 が付いているメソッド内でRxJavaPlugins を 使って、RxIdler のスケジューラを定義するだけ @Before fun setUp() {
// //RxJava Scheduler (Schedulers.io RxJavaPlugins.setInitIoSchedulerHandler( Rx2Idler.create("RxJava 2.x Io Scheduler") ) }
メリット・デメリット メリット・デメリット
メリット メリット テストがとても効率的に実行可能 とても簡単 TestRunner の初期化時に一行書くだけ RxJava での非同期処理にIdlingResources を適用 してくれる
プロダクトコードをいじらなくて済む
デメリット・注意点 デメリット・注意点 RxJava でしか使えない。 たまに待ってくれない箇所もある。(WebView にお いてフックするURL を待っている時など) サンプルを作ろうとしたが、RxIdler を使わなくて
も勝手に待ってくれることもあったりするので、も う少しRxIdler で対応できるところ、できないとこ ろを明確にしていきたい
まとめ まとめ RxIdler を使うとRxJava での非同期処理をよしなに して待ってくれるので便利 たまに待ってくれない箇所もあるため、一旦実行し てみて落ちるようなあればsleep するなどの対策が 必要かも?
参考 参考 こちらの資料などを参考にさせていただきました RxJava のアプリをEspresso でテストする簡単な方 法 Test apps on
Android -Android Developer- Espresso で アイドリング