org.mockito.internal.runners.JUnit45AndHigherRunnerImpl Maven / Gradle / Ivy
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.runners;
import org.junit.runner.Description;
import org.junit.runner.manipulation.Filter;
import org.junit.runner.manipulation.NoTestsRemainException;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.Statement;
import org.mockito.MockitoAnnotations;
import org.mockito.internal.runners.util.FrameworkUsageValidator;
public class JUnit45AndHigherRunnerImpl implements RunnerImpl {
private BlockJUnit4ClassRunner runner;
public JUnit45AndHigherRunnerImpl(Class klass) throws InitializationError {
runner = new BlockJUnit4ClassRunner(klass) {
protected Statement withBefores(FrameworkMethod method, Object target,
Statement statement) {
// init annotated mocks before tests
MockitoAnnotations.initMocks(target);
return super.withBefores(method, target, statement);
}
};
}
public void run(final RunNotifier notifier) {
// add listener that validates framework usage at the end of each test
notifier.addListener(new FrameworkUsageValidator(notifier));
runner.run(notifier);
}
public Description getDescription() {
return runner.getDescription();
}
public void filter(Filter filter) throws NoTestsRemainException {
runner.filter(filter);
}
}