package Ġcom . kas per sky . kas press o . test cases . api . testcase Ċ Ċ import Ġcom . kas per sky . kas press o . device . Device Ċ import Ġcom . kas per sky . kas press o . device . server . A db Server Ċ import Ġcom . kas per sky . kas press o . en r icher . Main Section En r icher Ċ import Ġcom . kas per sky . kas press o . intercept ors . watcher . testcase . impl . report . Build Step Report Watcher Interceptor Ċ import Ġcom . kas per sky . kas press o . kas press o . K as press o Ċ import Ġcom . kas per sky . kas press o . logger . Ui Test Logger Ċ import Ġcom . kas per sky . kas press o . report . impl . All ure Report Writer Ċ import Ġcom . kas per sky . kas press o . test cases . core . sections . After Test Section Ċ import Ġcom . kas per sky . kas press o . test cases . core . sections . Before Test Section Ċ import Ġcom . kas per sky . kas press o . test cases . core . sections . Main Test Section Ċ import Ġcom . kas per sky . kas press o . test cases . core . sections . Transform Section Ċ import Ġcom . kas per sky . kas press o . test cases . core . test assist ants . Test Ass ist ants Provider Ċ import Ġcom . kas per sky . kas press o . test cases . core . test assist ants . Test Ass ist ants Provider Impl Ċ import Ġcom . kas per sky . kas press o . test cases . core . test context . Base TestContext Ċ import Ġcom . kas per sky . kas press o . test cases . core . test context . TestContext Ċ import Ġcom . kas per sky . kas press o . test cases . models . Test Body Ċ import Ġcom . kas per sky . kas press o . test cases . models . extensions . to Test Identifier Ċ import Ġcom . mal in sky . mar athon . core . steps . Steps Results Consumer Impl Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . rules . Test Watcher Ċ import Ġorg . junit . runner . Description Ċ Ċ /** Ċ Ġ* ĠThe Ġbase Ġclass Ġfor Ġall Ġparame tri zed Ġtest Ġcases . ĠExtend Ġthis Ġclass Ġwith Ġa Ġsingle Ġbase Ġproject - wide Ġin her itor Ġof Ċ Ġ* Ġ[ TestCase ] Ġas Ġa Ġparent Ġfor Ġall Ġactual Ġproject - wide Ġtest Ġcases . ĠN esting Ġtest Ġcases Ġare Ġnot Ġrecommended , Ġuse Ċ Ġ* Ġ[ com . kas per sky . kas press o . test cases . api . scenario . Scenario ] Ġinstead . Ċ Ġ* Ċ Ġ* Ġ@ param ĠInit Data Ġdata Ġinitialized Ġin Ġbefore Ġsection . Ċ Ġ* Ġ@ param ĠData Ġdata Ġtransformed Ġfrom Ġ[ Init Data ] Ġby Ġspecial Ġfunction . Ċ Ġ*/ Ċ abstract Ġclass ĠBase TestCase < Init Data , ĠData >( ĊĠĠĠ Ġk as press o Builder : ĠK as press o . Builder Ġ= ĠK as press o . Builder . default (), ĊĠĠĠ Ġprivate Ġval Ġdata Producer : Ġ((( Init Data . () Ġ-> ĠUnit )? ) Ġ-> ĠData ), ĊĠĠĠ Ġprivate Ġval Ġmain Section En rich ers : ĠList < Main Section En r icher < Data >> Ġ= Ġempty List () Ċ ) Ġ: ĠTest Ass ist ants Provider Ġ{ ĊĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġk as press o : ĠK as press o ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġrule Ġis Ġusing Ġfor Ġwriting Ġsteps Ġinformation Ġfrom Ġtest Ġmethod Ġinto Ġa db Ġshell Ġoutput , Ġwhen Ġtest ĊĠĠĠĠ Ġ* Ġwas Ġended Ġsuccessfully Ġor Ġfailed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġinternal Ġval Ġsteps Results Consumer Ġ= ĠSteps Results Consumer Impl () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġrule Ġis Ġusing Ġfor Ġbinding Ġ[ com . kas per sky . kas press o . test cases . models . Test Identifier ] Ġwith Ġeach Ġtest Ġmethod ĊĠĠĠĠ Ġ* Ġin Ġthe Ġcurrent Ġtest Ġcase . ĠWith Ġthis Ġidentifier Ġwe Ġcan Ġwrite Ġadditional Ġinformation Ġinto Ġa db Ġshell Ġoutput ĊĠĠĠĠ Ġ* Ġcorrectly , Ġe . g . Ġsteps Ġinformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġinternal Ġval Ġtest Watcher Ġ= Ġobject Ġ: ĠTest Watcher () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstarting ( description : ĠDescription ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . starting ( description ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġk as press o Ġ= Ġk as press o Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Identifier Ġ= Ġdescription . to Test Identifier () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsteps Results Consum ers Ġ= ĠlistOf ( steps Results Consumer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Run Watcher Intercept ors . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Step Report Watcher Interceptor ( All ure Report Writer ( kas press o Builder . steps Results Consum ers )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠtestCase Name Ġ= Ġjava Class . simple Name ĊĠĠĠ Ġprivate Ġval Ġtest Ass ist ants Provider : ĠTest Ass ist ants Provider Impl Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTest Ass ist ants Provider Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk as press o ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġa db Server : ĠA db Server Ġby Ġlazy Ġ{ Ġtest Ass ist ants Provider . adb Server Ġ} ĊĠĠĠ Ġoverride Ġval Ġdevice : ĠDevice Ġby Ġlazy Ġ{ Ġtest Ass ist ants Provider . device Ġ} ĊĠĠĠ Ġoverride Ġval Ġtest Logger : ĠUi Test Logger Ġby Ġlazy Ġ{ Ġtest Ass ist ants Provider . test Logger Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġthe Ġbuilding Ġof Ġa Ġtest , Ġsets Ġthe Ġ[ Before Test Section ] Ġactions Ġand Ġreturns Ġan Ġexisting Ġinstance Ġof ĊĠĠĠĠ Ġ* Ġ[ After Test Section ] Ġto Ġcontinue Ġthe Ġbuilding Ġa Ġtest . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtest Name Ġa Ġname Ġof Ġthe Ġtest . ĊĠĠĠĠ Ġ* Ġ@ param Ġactions Ġactions Ġto Ġinvoke Ġin Ġbefore Ġtest Ġsection . ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġexisting Ġinstance Ġof Ġ[ After Test Section ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġbefore ( ĊĠĠĠĠĠĠĠ Ġtest Name : ĠString Ġ= ĠtestCase Name , ĊĠĠĠĠĠĠĠ Ġactions : ĠBase TestContext . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠAfter Test Section < Init Data , ĠData > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Body Builder Ġ= Ġcreate Base Test Body Builder ( test Name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBefore Test Section ( kas press o , Ġtest Body Builder ). before Test ( actions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġthe Ġbuilding Ġof Ġa Ġtest Ġfrom Ġdata Ġinitialization Ġsection . ĠSets ĊĠĠĠĠ Ġ* Ġ[ com . kas per sky . kas press o . test cases . core . sections . Init Section ] Ġactions Ġand Ġreturns Ġan Ġexisting Ġinstance Ġof ĊĠĠĠĠ Ġ* Ġ[ Main Test Section ] Ġto Ġcontinue Ġbuilding Ġa Ġtests . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtest Name Ġa Ġname Ġof Ġthe Ġtest . ĊĠĠĠĠ Ġ* Ġ@ param Ġactions Ġactions Ġto Ġbe Ġwrapped Ġand Ġinvoked Ġbefore Ġthe Ġtest Ġfor Ġdata Ġinitialization ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġexisting Ġinstance Ġof Ġ[ Main Test Section ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġinit ( ĊĠĠĠĠĠĠĠ Ġtest Name : ĠString Ġ= ĠtestCase Name , ĊĠĠĠĠĠĠĠ Ġactions : ĠInit Data . () Ġ-> ĠUnit ĊĠĠĠ Ġ): ĠTransform Section < Data > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Body Builder Ġ= Ġcreate Base Test Body Builder ( test Name ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Actions Ġ= Ġactions ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠMain Test Section ( kas press o , Ġtest Body Builder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġ[ com . kas per sky . kas press o . test cases . core . sections . Main Test Section ] Ġsteps , Ġcreates Ġan Ġinstance Ġof ĊĠĠĠĠ Ġ* Ġ[ Main Test Section ] Ġand Ġruns Ġit ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtest Name Ġa Ġname Ġof Ġthe Ġtest . ĊĠĠĠĠ Ġ* Ġ@ param Ġsteps Ġactions Ġto Ġinvoke Ġin Ġmain Ġtest Ġsection . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġrun ( ĊĠĠĠĠĠĠĠ Ġtest Name : ĠString Ġ= ĠtestCase Name , ĊĠĠĠĠĠĠĠ Ġsteps : ĠTest Context < Data >. () Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Body Builder Ġ= Ġcreate Base Test Body Builder ( test Name ) ĊĠĠĠĠĠĠĠ ĠMain Test Section ( kas press o , Ġtest Body Builder ). run ( steps ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Base Test Body Builder ( test Name : ĠString ): ĠTest Body . Builder < Init Data , ĠData > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTest Body . Builder < Init Data , ĠData >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . test Name Ġ= Ġtest Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data Producer Ġ= Ġthis @ Base TestCase . data Producer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . main Section En rich ers Ġ= Ġthis @ Base TestCase . main Section En rich ers ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }