Home | History | Annotate | Download | only in runners
      1 /*
      2  * Copyright (c) 2007 Mockito contributors
      3  * This program is made available under the terms of the MIT License.
      4  */
      5 package org.mockito.internal.runners;
      6 
      7 import org.junit.runner.Description;
      8 import org.junit.runner.manipulation.Filter;
      9 import org.junit.runner.manipulation.NoTestsRemainException;
     10 import org.junit.runner.notification.RunNotifier;
     11 import org.junit.runners.BlockJUnit4ClassRunner;
     12 import org.junit.runners.model.FrameworkMethod;
     13 import org.junit.runners.model.InitializationError;
     14 import org.junit.runners.model.Statement;
     15 import org.mockito.MockitoAnnotations;
     16 import org.mockito.internal.runners.util.FrameworkUsageValidator;
     17 
     18 public class JUnit45AndHigherRunnerImpl implements RunnerImpl {
     19 
     20     private BlockJUnit4ClassRunner runner;
     21 
     22     public JUnit45AndHigherRunnerImpl(Class<?> klass) throws InitializationError {
     23         runner = new BlockJUnit4ClassRunner(klass) {
     24             protected Statement withBefores(FrameworkMethod method, Object target,
     25                     Statement statement) {
     26                 // init annotated mocks before tests
     27                 MockitoAnnotations.initMocks(target);
     28                 return super.withBefores(method, target, statement);
     29             }
     30         };
     31     }
     32 
     33     public void run(final RunNotifier notifier) {
     34         // add listener that validates framework usage at the end of each test
     35         notifier.addListener(new FrameworkUsageValidator(notifier));
     36 
     37         runner.run(notifier);
     38     }
     39 
     40     public Description getDescription() {
     41         return runner.getDescription();
     42     }
     43 
     44 	public void filter(Filter filter) throws NoTestsRemainException {
     45 		runner.filter(filter);
     46 	}
     47 }