@TestMethodOrder(MethodOrderer.OrderAnnotation::class) @TestInstance(TestInstance.Lifecycle.PER_CLASS) abstract class UnitTest { private var counter: Int = 0 private var passed: Int = 0 @BeforeAll abstract fun beforeAll() abstract fun actualMethods(): List abstract fun expectedMethods(): List @AfterEach fun afterEach() { ++counter } @AfterAll fun afterAll() { StdOut.println("End of Test Suite") StdOut.printf("Passed %s of %s tests\n\n", passed, counter) } protected fun showPassed() { passed++ StdOut.println(Values.PASSED) } }