@Override
            public void evaluate() throws Throwable {
                List<Throwable> errors = new ArrayList<Throwable>();

                try {
                    starting(description);
                    base.evaluate();
                    succeeded(description);
                } catch (Throwable e) {
                    errors.add(e);
                    failed(e, description);
                } finally {
                    finished(description);
                }

                MultipleFailureException.assertEmpty(errors);
            }
{@link TestRule} which is called before and after each test, and also is notified on success/failure.

This mimics the behaviour of TestWatcher to some degree, but failures occurring in this rule do not
contribute to the overall failure count (which can otherwise cause strange negative test success
figures).
core/src/main/java/org/testcontainers/containers/FailureDetectingExternalResource.java