package Ġcom . k yle du o . app . k lab . m . unittest Ċ Ċ import Ġorg . junit . jupiter . api .* Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ /** Ċ Ġ* ĠTesting ĠJ unit 5 Ġtest Ġlifecycle Ċ Ġ*/ Ċ @ Extend With ( Lifecycle Extensions :: class ) Ċ class ĠJ Unit 5 Lifecycle Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" comp anion Ġobject Ġinit ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Before All ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġbefore All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count ĠBefore All ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ After All ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġafter All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count ĠAfter All ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcounter Ġ= ĠAtomicInteger ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcount : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"[ ${ String . format ("% 2 d ", Ġcounter . get And Increment ()) }] " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ("$ count ĠRoot ĠClass , Ġinit ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠbeforeEach () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ("$ count ĠRoot ĠClass , ĠBefore ĠEach Ġ 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Method 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ("$ count ĠRoot ĠClass , ĠTest ĠMethod Ġ 1 Ġ 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Method 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ("$ count ĠRoot ĠClass , ĠTest ĠMethod Ġ 2 Ġ 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠafterEach () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ("$ count ĠRoot ĠClass , ĠAfter ĠEach Ġ 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠNested Class 1 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 1 , Ġinit Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠ Ġfun ĠbeforeEach () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 1 , ĠBefore Each Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Method 1 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 1 , ĠTest ĠMethod Ġ 1 Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Method 2 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 1 , ĠTest ĠMethod Ġ 2 Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ After Each ĊĠĠĠĠĠĠĠ Ġfun ĠafterEach () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 1 , ĠAfter ĠEach Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġ@ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) ĊĠĠĠ Ġinner Ġclass ĠNested Class 2 Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 2 , Ġinit Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Before All ĊĠĠĠĠĠĠĠ Ġfun Ġbefore All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 2 , ĠBefore All Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ BeforeEach ĊĠĠĠĠĠĠĠ Ġfun ĠbeforeEach () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 2 , ĠBefore Each Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Method 1 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 2 , ĠTest ĠMethod Ġ 1 Ġ 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġtest Method 2 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 2 , ĠTest ĠMethod Ġ 2 Ġ 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ After Each ĊĠĠĠĠĠĠĠ Ġfun ĠafterEach () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 2 , ĠAfter ĠEach Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ After All ĊĠĠĠĠĠĠĠ Ġfun Ġafter All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ count Ġ${ this . hashCode ()} ĠNested ĠClass Ġ 2 , ĠAfter All Ġ 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }