package Ġorg . a ero gear . ak ow . test Ċ Ċ import Ġio . app ium . java _ client . App ium Driver Ċ import Ġorg . a ero gear . ak ow . dsl . App ium Ċ import Ġorg . a ero gear . ak ow . dsl . base . Application Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . runners . Parameterized Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ /** Ċ Ġ* ĠMake Ġyour Ġtests Ġinherit Ġthis Ġclass Ġto Ġuse Ġ[ ak ow ] Ġfunction Ġto Ġwrite Ġtests Ġusing ĠAk ow ĠDSL . Ċ Ġ*/ Ċ abstract Ġclass ĠAk ow Test ( val Ġapp ium : ĠApp ium ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAk ow Test Ġneeds Ġto Ġbe Ġinitialized Ġby Ġ[ Application ] Ġobject Ġpassed Ġas Ġparameter Ġto Ġparame tri zed Ġtest . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt 's Ġpossible Ġto Ġdo Ġit Ġlike Ġthis : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* Ġ@ RunWith ( Parameterized :: class ) ĊĠĠĠĠ Ġ* Ġclass ĠFirst Test : Ak ow Test ( app ium ) Ġ{ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ"{ 0 }") ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠ Ġfun Ġapplications () Ġ= Ġapp ium . applications . asList () ĊĠĠĠĠ Ġ* ĠĠ Ġ} ĊĠĠĠĠ Ġ* Ġ Ġâĭ ® ĊĠĠĠĠ Ġ* Ġ Ġâĭ ® ĊĠĠĠĠ Ġ* } ĊĠĠĠĠ Ġ* ``` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Parameterized . Parameter ĊĠĠĠ Ġlateinit Ġvar Ġapplication : ĠApplication ĊĊĠĠĠ Ġprivate Ġval Ġtest Context ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ test Context ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġ_ test Context : ĠAk ow TestContext ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTarget Ġplatform Ġof Ġcurrent Ġrunning Ġtest , Ġe . g . Ġ" Android " ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcurrent Platform : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġapplication . driver . platform Name Ġ?: Ġ" uk nown " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAccess Ġto Ġ[ App ium Driver ], Ġuse Ġit Ġin Ġrare Ġcases Ġwhen Ġyou Ġcan 't Ġdo Ġsomething Ġwith Ġusing ĠAk ow ĠDSL Ġonly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġlateinit Ġvar Ġdriver : ĠApp ium Driver < *> ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAccess Ġto ĠAk ow ĠDSL Ġcontext . ĠThis Ġallows Ġyou Ġto Ġwrite Ġtests Ġusing ĠAk ow ĠDSL Ġwith Ġpage Ġobjects Ġpattern . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġak ow ( test Context : ĠAk ow TestContext . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Context ( this . test Context ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAk ow Ġtest Ġinitialization . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġapp ium Init () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! :: application . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" You 'll Ġneed Ġto Ġinitialize Ġyour Ġtest Ġwith Ġapplication Ġobject . ĠPlease Ġuse Ġparame tri zed Ġtest Ġand Ġinitialize Ġit Ġwith Ġyour Ġlist Ġof Ġapplications ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"@ RunWith ( Parameterized :: class )\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" class ĠYour Test Ġ: ĠAk ow Test ( app ium ) Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġcompanion Ġobject Ġ{\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ( name Ġ= Ġ\" { 0 }\ ") \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġ@ Jvm Static \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠĠĠ Ġfun Ġapplications () Ġ= Ġapp ium . applications . asList ()\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ}" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġâĭ ® " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġâĭ ® " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ test Context Ġ= ĠAk ow TestContext ( application , Ġapp ium ). also ( Ak ow TestContext :: init ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAk ow Ġtest Ġshutdown . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġapp ium Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Context . destroy () ĊĠĠĠ Ġ} Ċ Ċ }