package Ġcom . github . erik hu izing a . mock k . junit 4 . example Ċ Ċ import Ġcom . github . erik hu izing a . mock k . junit 4 . Mock k Test Ċ import Ġio . mock k . Mock K Exception Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Object Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . BeforeClass Ċ import Ġorg . junit . Fix Method Order Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Method Sort ers Ċ import Ġorg . junit . runners . Suite Ċ Ċ /** Ċ Ġ* ĠIn Ġthis Ġtest Ġsuite Ġthe Ġorder Ġof Ġsuite Ġclasses Ġand Ġunit Ġtests Ġis Ġfixed Ġfor Ġthe Ġexample 's Ċ Ġ* Ġpurposes . Ċ Ġ* Ċ Ġ* ĠExt ending Ġ[ Mock k Test ] Ġensures Ġall ĠMock K Ġmock Ġstate Ġis Ġcleared Ġbetween Ġunit Ġtests Ġand Ġall Ġmocks Ċ Ġ* Ġare Ġun mocked Ġbetween Ġtest Ġclasses . Ċ Ġ* Ċ Ġ* ĠThe Ġfirst Ġtest Ġclass Ġ[ Example Mock k Test ] Ġruns . Ċ Ġ* ĠFirst Ġwe Ġmock Ġ[ Your Object ]. Ċ Ġ* ĠBecause Ġmock ing Ġmay Ġbe Ġexpensive Ġand / or Ġslow , Ġwe Ġonly Ġdo Ġthis Ġonce Ġby Ġusing Ċ Ġ* Ġ[@ BeforeClass ][ BeforeClass ] Ġin Ġthe Ġ` comp anion Ġobject `; Ċ Ġ* Ġin Ġthe Ġclass Ġbody Ġitself Ġit Ġwould Ġrun Ġfor Ġevery Ġunit Ġtest . Ċ Ġ* Ċ Ġ* ĠThen Ġthe Ġunit Ġtests Ġin Ġ` Example Mock k Test ` Ġrun . Ċ Ġ* ĠTest Ġ 1 Ġmocks Ġ[ Your Object . toString ] Ġand Ġthen Ġassert s Ġand Ġverifies Ġthis . Ċ Ġ* ĠTest Ġ 2 Ġis Ġin Ġthe Ġsame Ġtest Ġclass , Ġso Ġ` Your Object ` Ġis Ġstill Ġmocked , Ġbut Ġany Ġmock Ġstate Ġfrom Ġtest Ġ 1 Ċ Ġ* Ġshould Ġnot Ġleak Ġinto Ġtest Ġ 2 Ġ( i . e . Ġthe Ġmock Ġshould Ġbe Ġcleared ); Ġthis Ġis Ġtested Ġin Ġtest Ġ 2 . Ċ Ġ* Ċ Ġ* ĠThe Ġnext Ġtest Ġclass Ġ[ Your Object Is No Long er Mock ed Test ] Ġshould Ġnot Ġbe Ġinflu enced Ġby Ġthe Ġfirst Ġtest Ċ Ġ* Ġclass Ġand Ġits Ġunit Ġtests . Ċ Ġ* ĠTest Ġ 3 Ġassert s Ġand Ġverifies Ġthis . Ċ Ġ* ĠHowever , Ġthe Ġverification Ġcannot Ġbe Ġdone , Ġbecause Ġ` Your Object ` Ġis Ġno Ġlonger Ġa Ġmock . Ċ Ġ* ĠInstead , ĠMock K Ġthrows Ġa Ġ[ Mock K Exception ] Ġand Ġthis Ġis Ġassert ed . Ċ Ġ*/ Ċ @ RunWith ( Suite :: class ) Ċ @ Suite . Suite Classes ( Example Mock k Test :: class , ĠYour Object Is No Long er Mock ed Test :: class ) Ċ class ĠExample TestSuite Ċ Ċ /** Ċ Ġ* ĠThis Ġwill Ġbe Ġmocked Ġin Ġthe Ġexample . Ċ Ġ*/ Ċ object ĠYour Object Ċ Ċ private Ġconst Ġval Ġstring Ġ= Ġ" string " Ċ Ċ @ Fix Method Order ( Method Sort ers . NAME _ ASC ENDING ) Ċ class ĠExample Mock k Test Ġ: ĠMock k Test () Ġ{ Ġ// ĠRemove Ġ`: ĠMock k Test ()` Ġto Ġleak Ġmock Ġstate ! ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ BeforeClass ĊĠĠĠĠĠĠĠ Ġfun Ġ` before Ġclass `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock k Object ( Your Object ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġ 1 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠYour Object . toString () Ġ} Ġreturns Ġstring Ġ// ĠMock ĠtoString ĊĠĠĠĠĠĠĠ ĠassertEquals ( string , ĠYour Object . toString ()) ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠYour Object . toString () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġ 2 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( string , ĠYour Object . toString ()) Ġ// ĠtoString Ġis Ġno Ġlonger Ġmocked ! ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠYour Object . toString () Ġ} Ġ// ĠYour Object Ġstill Ġis Ġmocked ! ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠYour Object Is No Long er Mock ed Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġ 3 `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( string , ĠYour Object . toString ()) Ġ// ĠtoString Ġis Ġno Ġlonger Ġmocked ! ĊĠĠĠĠĠĠĠ ĠassertThrows ( Mock K Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ ĠYour Object . toString () Ġ} Ġ// ĠYour Object Ġis Ġno Ġlonger Ġmocked ! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ