JBehave - все шаги отмечены как ожидающие?

Я пытаюсь создать и запустить простой JUnitStory для запуска файла .story.

У меня есть это:

class Scenario1 extends JUnitStory {
    @Delegate MySteps steps = new MySteps()

    @Override
    public Configuration configuration() {
        return new MostUsefulConfiguration()
                .useStoryLoader(new LoadFromRelativeFile(new File('src/test/groovy').toURL()))
                .useStoryReporterBuilder(
                new StoryReporterBuilder()
                        .withDefaultFormats()
                        .withFormats(Format.HTML, Format.CONSOLE, Format.TXT)

        );
    }

    @Override
    public List candidateSteps() {
        final candidateSteps = new InstanceStepsFactory(configuration(), this).createCandidateSteps()
        return candidateSteps;
    }
}

С делегатом или без него (копируя и вставляя все аннотированные методы MySteps), всякий раз, когда я запускаю JBehave, я получаю следующий результат:

somePattern(){
  // PENDING
}

Это похоже на то, что отдельные истории не подбираются по шагам.

Когда я создаю класс «Истории» и загружаю все файлы историй с помощью storyPaths, определяются отдельные шаги. Используя отладчик, я вижу, что кандидатшаг срабатывает, но он не извлекает нужные данные.

Что здесь может происходить?


person Stefan Kendall    schedule 11.01.2012    source источник
comment
Просто проверяю, но импортирует ли MySteps org.jbehave.core.annotations.*?   -  person Paul Medcraft    schedule 18.01.2012


Ответы (4)


Вам не нужно делегировать шаги. А также вы не должны переопределять кандидатыШаги, а скорее фабрику шагов. В более поздних версиях JBehave кандидатшаги устарели, чтобы сделать предпочтение фабричного метода более заметным ( http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/ConfigurableEmbedder.html#candidateSteps() )

См. этот блог, где я более подробно объяснил, как работает базовая конфигурация JBehave:

http://blog.codecentric.de/en/2012/06/jbehave-configuration-tutorial/

Андреас

person AndreasEK    schedule 22.06.2012

Вот твой ответ, приятель: Изменился пакет формата.

Это устаревший статический импорт org.jbehave.core.reporters.StoryReporterBuilder.Format.HTML;

Это новый :) import static org.jbehave.core.reporters.Format.HTML;

Потребовалось время, чтобы найти ответ, но он был скрыт в документации jbehave.

Надеюсь, поможет! Ваше здоровье!

person rodrigoms    schedule 07.08.2014

Вам не нужно использовать @Delegate - ваш JUnitStory не является вашим классом Steps. Можете ли вы попробовать пройти по шагам, где у вас есть это?

Когда вы передаете класс, который был обработан байт-кодом для классов Steps, JBehave может больше не видеть аннотации jbehave.

person Brian Repko    schedule 24.02.2012

JBehave — старая, недоразвитая технология. Не используйте его.

person Stefan Kendall    schedule 18.06.2012
comment
поясните, пожалуйста, почему вы так думаете? - person endless; 27.02.2014