package Ġde . th orb enk uck . mock k . probe Ċ Ċ import Ġde . th orb enk uck . mock k . Test Subject Ċ import Ġde . th orb enk uck . mock k . probe Ċ import Ġio . mock k . Mock K Exception Ċ import Ġio . mock k . spy k Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġjava . lang . AssertionError Ċ Ċ class ĠSync Probe Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġthe Ġprobe Ġwith Ġa Ġnon Ġmock Ġthrows Ġthe Ġexception `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġto Probe Ġ= ĠTest Subject () ĊĊĠĠĠĠĠĠĠ ĠassertThrows < Mock K Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprobe Ġ{ Ġto Probe . pass Through ( any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġthat Ġwhen Ġnot Ġexecuted Ġthe Ġtest Ġfail `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġto Probe Ġ= Ġspy k ( Test Subject ()) ĊĠĠĠĠĠĠĠ Ġval Ġprobe Ġ= Ġprobe Ġ{ Ġto Probe . pass Through ( any ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNo ĠAct ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertThrows < AssertionError > Ġ{ Ġprobe . getResult ( timeout InSeconds Ġ= Ġ 3 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġwith Ġspy k Ġin Ġsynchronized Ġcall `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġto Probe Ġ= Ġspy k ( Test Subject ()) ĊĠĠĠĠĠĠĠ Ġval Ġprobe Ġ= Ġprobe Ġ{ Ġto Probe . pass Through ( any ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġto Probe . pass Through ( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġfirst Argument Ġ= Ġprobe . get Argument < Any ? >( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprobe . getResult () ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( first Argument ). isNull () ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( result ). isNull () ĊĠĠĠ Ġ} Ċ } Ċ