package de.bechte.junit.runners.context.statements.builder;
import org.junit.BeforeClass;
import org.junit.internal.runners.statements.RunBefores;
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 BeforeClassStatementBuilder} creates a {@link RunBefores} statement that evaluates all
* {@code @BeforeClass} annotated methods. If no such method exist, the builder will simply return the provided next
* {@link Statement}.
*/
public class BeforeClassStatementBuilder implements ClassStatementBuilder {
public Statement createStatement(final TestClass testClass, final Statement next,
final Description description, final RunNotifier notifier) {
final List<FrameworkMethod> befores = testClass.getAnnotatedMethods(BeforeClass.class);
return befores.isEmpty() ? next : new RunBefores(next, befores, null);
}
}