JunitFeatureRunner extends org.junit.runner.Runner { public final void init(final Class<?> reportedClass, final List<Class<?>> stepImplementationClasses, final String featureFile, final String tags, final String subStepsFile, final Class<?>[] beforeAndAfterImplementations) { init(reportedClass, stepImplementationClasses, featureFile, tags, subStepsFile, true, null, EclipseDescriptionProvider.class, beforeAndAfterImplementations); } JunitFeatureRunner();  JunitFeatureRunner(final Class<?> classContainingTheTests); final void init(final Class<?> reportedClass, final List<Class<?>> stepImplementationClasses,
            final String featureFile, final String tags, final String subStepsFile,
            final Class<?>[] beforeAndAfterImplementations); final void init(final Class<?> reportedClass, final List<Class<?>> stepImplementationClasses,
            final String featureFile, final String tags, final String subStepsFileName, final boolean strict,
            final String[] nonStrictKeywordPrecedence,
            final Class<? extends DescriptionProvider> descriptionProviderClass,
            final Class<?>[] beforeAndAfterImplementations); @Override Description getDescription(); @Override void run(final RunNotifier junitNotifier); IExecutionNode getRootExecutionNode();  }
@Test(expected = SubstepsConfigurationException.class) public void testMissingSubStepCausesFailure() { final String feature = SUBSTEPS_RESOURCES_BASE_DIRECTORY + "features/error.feature"; final String tag = "@bug_missing_sub_step_impl"; final String substeps = SUBSTEPS_RESOURCES_BASE_DIRECTORY + "substeps/error.substeps"; final JunitFeatureRunner runner = new JunitFeatureRunner(); final List<Class<?>> stepImplsList = new ArrayList<Class<?>>(); stepImplsList.add(TestStepImplementations.class); runner.init(this.getClass(), stepImplsList, feature, tag, substeps, null); }