Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unit Testing While Using RxJava 2
Search
Elvis Lin
December 27, 2017
Programming
1
370
Unit Testing While Using RxJava 2
Introduce how to write a unit testing while you use RxJava 2 in your program
Elvis Lin
December 27, 2017
Tweet
Share
More Decks by Elvis Lin
See All by Elvis Lin
Protect Users' Privacy in iOS 14
elvismetaphor
0
46
Dubugging Tips and Tricks for iOS development
elvismetaphor
0
50
Strategies of Facebook LightSpeed project
elvismetaphor
0
66
Background Execution And WorkManager
elvismetaphor
2
480
作為一個跨平台的 Mobile App 開發者,從入門到放棄!?
elvismetaphor
2
490
Dependency Injection for testability of iOS app
elvismetaphor
1
1.4k
Briefly Introduction of Kotlin coroutines
elvismetaphor
1
280
MotionLayout Brief Introduction
elvismetaphor
1
320
Chapter 10. Pattern Matching with Regular Expressions
elvismetaphor
0
41
Other Decks in Programming
See All in Programming
Signal-Based Data FetchingWith the New httpResource
manfredsteyer
PRO
0
160
AHC 044 混合整数計画ソルバー解法
kiri8128
0
320
Memory API : Patterns, Performance et Cas d'Utilisation
josepaumard
0
100
「”誤った使い方をすることが困難”な設計」で良いコードの基礎を固めよう / phpcon-odawara-2025
taniguhey
0
110
「影響が少ない」を自分の目でみてみる
o0h
PRO
2
960
Youtube Lofier - Chrome拡張開発
ninikoko
0
2.4k
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
150
技術選定を未来に繋いで活用していく
sakito
3
100
メモリウォールを超えて:キャッシュメモリ技術の進歩
kawayu
0
1.9k
The Weight of Data: Rethinking Cloud-Native Systems for the Age of AI
hollycummins
0
270
Qiita Bash
mercury_dev0517
1
190
サービスクラスのありがたみを発見したときの思い出 #phpcon_odawara
77web
4
630
Featured
See All Featured
It's Worth the Effort
3n
184
28k
How GitHub (no longer) Works
holman
314
140k
Adopting Sorbet at Scale
ufuk
76
9.3k
Into the Great Unknown - MozCon
thekraken
37
1.7k
Code Reviewing Like a Champion
maltzj
522
39k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
How to train your dragon (web standard)
notwaldorf
91
6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
How STYLIGHT went responsive
nonsquared
99
5.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.6k
Visualization
eitanlees
146
16k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Transcript
如何對使⽤用 RxJava 的 程式做 Unit Test Elvis Lin 2017-12-27@Android Taipei
None
如何測試 Asynchronous Behavior 其實我想說的是
(Synchronous) Long Job Model WebClient Server 準備讀資料 資料回傳 被卡住
(Asynchronous) Long Job Model WebClient Server 準備讀資料 資料回傳 繼續執⾏行行 其他⼯工作
同步的單元測試 • doSyncCall(); • readResult(); • assertResult();
非同步的單元測試? • doAsyncCall(); • sleep(aWhile); • readResult(); • assertResult();
非同步的單元測試 — 基本技巧 • Callback • doAsyncCall(callback); • Pooling
非同步的單元測試 — Pooling doAsyncCall(); startTime = Time.now(); while (!responseReceived) {
if (Time.now() - startTime > waitLimit) throw new TestTimeoutException(); sleep (pollingInterval); } readResult(); assertResult();
在 RxJava 實作 Unit Test • 拆解 Observable 跟 Observer
• 使⽤用 TestObserver 與 TestScheduler • 使⽤用 Interface 隔離實作
拆解 Observer 跟 Observable
使⽤用 TestObserver / TestSubscriber • 範例例:https:// gist.github.com/ elvismetaphor/ 2188fd635d8e3308308bd05c59cf 63fa
使⽤用 Interface 隔離實作
重要的事情說三兩兩遍 • 拆解 Observable 跟 Observer • 使⽤用 TestObserver 與
TestScheduler • 使⽤用 Interface 隔離實作
參參考資料 • Asynchronous Behavior http://teddy-chen-tw.blogspot.tw/ 2012/12/3asynchronous-behavior.html • Testing RxJava2 https://www.infoq.com/articles/Testing-
RxJava2 • Testing asynchronous RxJava code using Mockito https://medium.com/@fabioCollini/testing- asynchronous-rxjava-code-using- mockito-8ad831a16877