class 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);
    }

}

class JunitFeatureRunnerTest extends org.junit.runner.Runner {

    private static final String SUBSTEPS_RESOURCES_BASE_DIRECTORY;

    @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);
    }

}