package de.bechte.junit.runners.context.statements.builder; import org.junit.AfterClass; import org.junit.internal.runners.statements.RunAfters; import org.junit.runner.Description; import org.junit.runner.notification.RunNotifier; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.Statement; import org.junit.runners.model.TestClass; import java.util.List; /** * The {@link AfterClassStatementBuilder} creates a {@link RunAfters} statement that evaluates all {@code @AfterClass} * annotated methods. If no such method exist, the builder will simply return the provided next {@link Statement}. */ public class AfterClassStatementBuilder implements ClassStatementBuilder { public Statement createStatement(final TestClass testClass, final Statement next, final Description description, final RunNotifier notifier) { final List<FrameworkMethod> afters = testClass.getAnnotatedMethods(AfterClass.class); return afters.isEmpty() ? next : new RunAfters(next, afters, null); } }