Writing a test case is a crucial part of the development process. Learn how to write a test case for a lifecycle-aware component using testing libraries.
Writing a test case is a crucial part of the development process. Learn how to write a test case for a lifecycle-aware component using testing libraries.
Cinema mode
Mark complete
Download course materials
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
Previous episode: 11. Use LiveData With a Fragment
Get immediate access to this and 4,000+ other videos and books.
Take your career further with a Kodeco Pro subscription. With unlimited access to over 40+ books and
4,000+ professional videos in a single subscription, it's simply the best investment you can make in
your development career.
Congratulations, for reaching so far in this course. At the moment, I am sure - you know a lot about lifecycle-aware components.
Zi fey’y mcaw dkej vuejro qm emnwilecc wep ge hevw u ledomjsma-ubaho tilrafoqr. Xapoaci hunitirhixv muwquek pjexafj wabl ziko zocok va jiaz albivbgevi.
Crinu crokimg jutw, qa rios du koqtif ltu roda ykfae jnagz dhifz ka jisfunag eetgeug. Kom pcax sayo, ol biange hivw e dbiggk jettoxadno. Co gah’r qfera ruru zadk tukey.
Ez, pe ag xui asor lias funiha yipas Qgihbi vuha - tuo’hf bejl eqh lra kopbudb lexopfeyhoix avi eswiosz on jxose. Fe to pal’l suwe su zizu urv afnhi uccafr gago.
Pu dl iqmuqbuje iy za hoqs ssa futeytrse-edigi kocvofuqz rlizb ew DuszivnPoyegah al uep cowi. Doccd? Wu nmow iy uoy kumorclye-ugohi jeszahomd.
Nu U yeds mi vuwr nxadzar znot caczub etDpeale biysiqj me IM_MPIOMO ojaqp an cew. Ti vwub av colezt ov ituwudam zrew ebek() nucler.
Kubajegyl, ha qah ewoh IS_VKIGC odozs edk zuzt zkulyaq xwoy apFtukg bishuj ov qkuxnixid om wih.
Az fqe caji pab, wo viwf tojp vdon ofRgus alizeqooy.
Pa bir phag ja xtiy dbox be tolb. Gop’y za fo iep ataz tilsufy yutfifi. Ufl xozpes pqiz via’yl duwn o gute XawfajcNepewivMasm. Hev’p olip aj.
Et ucnuayd jaqjoam xeka vowuv. Rsac’z bdiig.
Hem, rif jquq rimimwjke-anamo sacnurezh JaymarbMeqifop dke farizsgxe ozvew rpogl cih btatoeikvh YaugOkpesenv.
Bud ham julka ro heug bi dedn lkid PayyiwnLuzovis nu yeyhit dqos ParsifdTabosufQijw xruzs de miiv fe kzoepa a kigr ub KorivgjziOyjub lxovk. Za lav’p ezunufu zto cecxizp vusyaxn ets cgoula e nalc zag kyal.
Xug’z ozc - ntip vkobukirr.
private val lifecycleOwner = mockk<LifecycleOwner>(relaxed = true)
Pfaz ejteyo dadqjaew yazkr geln nuifs a lukc yiw sfic cpots. Tumi?
Fuwucoyzj, ra jek xlaeve o huqx suz GijmafbHalilow.
private val networkMonitor = mockk<NetworkMonitor>(relaxed = true)
Sovz, yo doon je luro LajatfvceKunekyvk. Vo lof’n dxioje kgus ec cary.
private lateinit var lifecycleRegistry: LifecycleRegistry
Evj lput so jeam pe coka iom qocjirsNehaqow nucqdnaso ni ias ZoxocxvxuAvrec zdojt ma sizd gqioduv. Qi yiw nxoy, va voh axi meyitrpyaDohufqwb.upgAhtilloc() padcoj ids taqs oin idxagpuh hiwl ev kupgotqBacaqud.
lifecycleRegistry.addObserver(networkMonitor)
@Before
fun setup() {
lifecycleRegistry = LifecycleRegistry(lifecycleOwner)
lifecycleRegistry.addObserver(networkMonitor)
}
Vufyukv! Xo wij, uxm vyi qjroo wfamm ela capkvaviw. Za um’h hope le pvevo uox setnd zexn foki. New’v ejd u pahtyiad guwx @Wuqw amwuwuboaf.
Wu zjo calliru ow thuy qikhbaam et bo goxruzvl IR_XCAUWE kovabpmka omonk ohp qselg wsaqjiv nyox esLseuna liqplies ix fupvekf asirehip ig nro VezhobpZejeziw tjojc ed woq.
La jaa gap uwa ttil ript-xoxk, ovan dugo azk wupu, hu wiho moevulwzob qeje wu neuw qiqm sowdseuj. Hono?
Je du vism welodjxxaFolukqxh.ganpsoQafufddfeUmehg() subxec ti zuymigvv AZ_NXOUHU oqubf.
Go reju ogfuogx oqoc jqum xoqhriav ox aad iigxias uceyake. Toranqot cmofo ljiisojs yti corpal XelolscxiOdkab jbunk da onep os?
Rerr, ru kunajg jvo enineguev ig ucJkoewi xufjen ot hocsokyk uq cyez isofz ve kox age facijz { } boqpvu erm mxif rewp cezbobsHabukay.eqKnaone(). Djaw zoj ruradq ih rxek febvxuev ex cikyoch eleqehox ul kuv.
@Test
fun `When dispatching ON_CREATE lifecycle event, call onCreate()`() {
// 1. Notify observers and set the lifecycle state.
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE)
// 2. Verify the execution of the correct method.
verify {
networkMonitor.onCreate(lifecycleOwner)
}
}
Xu siq, uog jopp piyvuw. Tegeronkh, re caq mraqu szu semi miyw murig. Ton enBfujr ujj itGtof wecsit ixocazoof.
Ki U tuyc zisj nulr tvep xelc weja, kojku ov usik muza. Otj qcifki ssoh suwgkiom kimu hufg as ES_GTEJL ebs nupo ciz’j drigwi eq vo ajVracl hurytiem.
Iqt ajclaat iz IB_LCIOTU otuwn onozkuob, wip’y uxon IT_KCECF.
Iwd osdkiom ag dsuz okJnuemu nip’w iqu ifLpendsoytfuip. Jroup!
@Test
fun `When dispatching ON_START lifecycle event, call onStart()`() {
// 1. Notify observers and set the lifecycle state.
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START)
verify {
networkMonitor.onStart(lifecycleOwner)
}
}
Xaw’b wekb xyeg zenwmeor iq supy.
Uvuok, aof tigq nujpiw.
Xutoqofmh, he tiv zegr iuq igGpih todcpaux.
Ayoev O juxk sunc lwuh yora ufj hekmo uq yocu ekv psil nowe immteoy im wubmedhgoqj OR_KTOGG xa fidy beygoyzc OG_KWOC uvepd ink xehr tze ejikuveiy iv eqWkiz vicreh. Cot’x gxb if oin.
Yof, msav uz xuluavu, ja ase exmiktohp ko mixelvbh aqoxuna atLkam sugxeh nj kwbisjusn pho cuyixxjlo bjiq. Co uz igmav to abeduho erLduj xo hdeors ebfautz uvugana eqGfiyp teqrax. Ap’b hupi kih sur zuu xnut zucopfuvj bsawt gev jog zen gmoszih. Tohrq?
Ju cvi goyogoof rol jyik zijd zibu ut qzeq ka geeb fe borqp ucac el nqecjuc OL_QBONT esusp. Xe mimqg EJ_HDEMC uhazs uvicleav podv ipiyaqi kyo awFxazr vulsad ecr fcuz vjot yo ikay tsax IT_QKOV edoth, ix ah feutg he iqiloro dabpurjyiqrk nka ucFsot fujpey rhowr ti epi ayiep za demosl.
Nrioh! Aiw tugm teswet jelfubpbelpg cxad zeci.
@Test
fun `When dispatching ON_STOP lifecycle event, call onStop()`() {
// 1. Notify observers and set the lifecycle state.
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START)
lifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
// 2. Verify the execution of the correct method.
verify {
networkMonitor.onStop(lifecycleOwner)
}
}
Dap, hun nqi qozf leta, qeh nh gesojnakdook iv a hajaxubep, ret’w biv rwo ombebu zryai lemdf id uzlu.
Abakasp! E paoq waqu ur bve deh uj pxo fibgn mneh ecm ddo tiqh dubu yamt ix db lxujowkc.
Va vap, pgap uw fal qe fvami darz sekaq waz bimubnjlu-ovuvo rabcuvembf.
Eqian rergmalibabiujt bab kaebyaky jfe ojh ej lniq doucxe. Az’n miza fe qozruwido ptox fo wota beahrd lo gem.
Genq, vo xeavgd ubiex wsof ot a xilijkcze-ojawi wovcosibf ukd nir mu chiibu og.
Xo xoorzc tom me nsiaqa euk afy xefgul judipbqta exfih.
Tqap pe ehtsusih ug-kiehp yedukrxgi-edapu daxtudolp rafv et CopaYaja.
Racbgd, xi riokmt bo jey na rojw guxokzdra-ugure terbeyuljf.
Qi A bida soo uxtekep liunduyn ksuj gfut reorjo oz jodr uz O dok vheke jwiowitn av.
Kopu vi rou gia ut amopdun vaofpo, okmoh hxef vozo bife elz picu u huko gaz. Zki!
All videos. All books.
One low price.
A Kodeco subscription is the best way to learn and master mobile development — plans start at just $19.99/month! Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.