JBehave не распознает шаги, но загружает файл шагов

С помощью другого тестового прогона (основанного на аннотации) шаги запускаются и запускаются. Подход, основанный на аннотациях, похоже, не поддерживает фабрику шагов, поэтому я поменялся местами. Теперь он загрузит класс шагов (некоторые видимые вещи случаются при вызове конструктора), но он не распознает ни одного шага внутри него. Есть идеи? Вот мой класс по встраиванию:

открытый класс LoginAcceptanceFull extends JUnitStories {

private final CrossReference xref = new CrossReference();

public LoginAcceptanceFull() {
    configuredEmbedder().embedderControls().doGenerateViewAfterStories(true)
    .doIgnoreFailureInStories(true).doIgnoreFailureInView(true).useThreads(2)
    .useStoryTimeoutInSecs(60);
}

@Override
public Configuration configuration() {
    Class<? extends Embeddable> embeddableClass = this.getClass();
    Properties viewResources = new Properties();
    viewResources.put("decorateNonHtml", "true");
    // Start from default ParameterConverters instance
    ParameterConverters parameterConverters = new ParameterConverters();
    // factory to allow parameter conversion and loading from external
    // resources (used by StoryParser too)
    ExamplesTableFactory examplesTableFactory = new ExamplesTableFactory(new LocalizedKeywords(),
            new LoadFromClasspath(embeddableClass), parameterConverters);
    // add custom converters
    parameterConverters.addConverters(new DateConverter(new SimpleDateFormat("yyyy-MM-dd")),
            new ExamplesTableConverter(examplesTableFactory));

    return new MostUsefulConfiguration()
            .useStoryControls(new StoryControls().doDryRun(false).doSkipScenariosAfterFailure(false))
            .useStoryLoader(new LoadFromURL())
            .useStoryParser(new RegexStoryParser(examplesTableFactory))
            .useStoryPathResolver(new UnderscoredCamelCaseResolver())
            .useStoryReporterBuilder(
                    new StoryReporterBuilder()
                            .withCodeLocation(CodeLocations.codeLocationFromClass(embeddableClass))
                            .withDefaultFormats().withPathResolver(new ResolveToPackagedName())
                            .withViewResources(viewResources).withFormats(org.jbehave.core.reporters.Format.HTML, 
                                    org.jbehave.core.reporters.Format.TXT, org.jbehave.core.reporters.Format.XML)
                            .withFailureTrace(true).withFailureTraceCompression(true).withCrossReference(xref))
            .useParameterConverters(parameterConverters)
            .useStepPatternParser(new RegexPrefixCapturingPatternParser("%")) 
            .useStepMonitor(xref.getStepMonitor());
    }

@Override
public InjectableStepsFactory stepsFactory(){
    return new InstanceStepsFactory(configuration(), new LoginSteps());
}

@Override 
protected List<String> storyPaths(){
    String codeLocation = org.jbehave.core.io.CodeLocations.codeLocationFromClass(this.getClass()).getFile();
    return new StoryFinder().findPaths(codeLocation, asList("**/login_trial.story"),
                asList(""), "file:" + codeLocation);
}

}

1 ответ

Я нашел это. Прямо здесь был виновник:

.useStepPatternParser(new RegexPrefixCapturingPatternParser("%"))

Это приводило к тому, что JBehave не распознавал аннотации @Given, поэтому JBehave предположил, что для всего необходим шаг, и перечислил их как ожидающих (или пропустил, потому что они пропустили шаг @Given). Как только я вытащил эту часть конфигурации, все было круто.

Другие вопросы по тегам