ThrowableRunnable<Throwable> (@NotNull ThrowableRunnable<Throwable> testRunnable) { Description testDescription = Description.createTestDescription(getClass(), getName()); return () -> { boolean success = false; TestLoggerFactory.onTestStarted(); try { testRunnable.run(); success = true; } catch (AssumptionViolatedException e) { success = true; throw e; } catch (Throwable t) { TestLoggerFactory.logTestFailure(t); throw t; } finally { TestLoggerFactory.onTestFinished(success, testDescription); } }; }