1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/* 2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors 3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License. 4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */ 5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.internal.runners; 7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.junit.internal.runners.InitializationError; 9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.junit.internal.runners.JUnit4ClassRunner; 10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.junit.runner.Description; 11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.junit.runner.manipulation.Filter; 12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.junit.runner.manipulation.NoTestsRemainException; 13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.junit.runner.notification.RunNotifier; 14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.MockitoAnnotations; 15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.runners.util.FrameworkUsageValidator; 16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson@SuppressWarnings("deprecation") 18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class JUnit44RunnerImpl implements RunnerImpl { 19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson JUnit4ClassRunner runner; 21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public JUnit44RunnerImpl(Class<?> klass) throws InitializationError { 23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson this.runner = new JUnit4ClassRunner(klass) { 24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson @Override 25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson protected Object createTest() throws Exception { 26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson Object test = super.createTest(); 27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson MockitoAnnotations.initMocks(test); 28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return test; 29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 30e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson }; 31e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 32e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 33e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public void run(RunNotifier notifier) { 34e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson // add listener that validates framework usage at the end of each test 35e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson notifier.addListener(new FrameworkUsageValidator(notifier)); 36e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 37e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson runner.run(notifier); 38e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 39e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 40e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public Description getDescription() { 41e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson return runner.getDescription(); 42e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 43e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson 44e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson public void filter(Filter filter) throws NoTestsRemainException { 45e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson runner.filter(filter); 46e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson } 47e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}