Как интегрировать Spring в огурец - PullRequest
8 голосов
/ 23 февраля 2012

В настоящее время я пытаюсь интегрировать Spring в мои тесты на огурец. У меня есть собственный SpringFactory, как указано в:

http://www.zsoltfabok.com/blog/2012/01/cucumber-jvm-di/

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

[Уточнение из комментария к удаленному ответу: основная проблема заключается в том, что в моем тесте основным исполнителем является Cucumber, т.е. @RunWith (Cucumber.class), поэтому здесь нельзя использовать SpringJUnit4ClassRunner. Это описано в ссылке выше, но нет описания того, как читается cucumber.xml. Я добавил новый SpringFactory, но он не читает файл XML ....]

Обновление: На самом деле немного продвинулись, добавив:

    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-spring</artifactId>
        <version>1.0.0.RC15</version>
    </dependency>   

Однако у меня есть переменные @Autowired, которые не внедряются, поскольку тест выполняется Cucumber.

Кто-нибудь еще имел эту проблему?

Ответы [ 4 ]

9 голосов
/ 25 апреля 2014

Обновление: проект cuke4duke устарел и был заменен на Cucumber-JVM.

У меня также была та же проблема, и основной причиной было то, что cucumber.xml не читался SpringFactory в cucumberжёсткости-1.1.5.jar.Spring DI молча провалился, что привело к NPE.После отправки 448 Cucumber SpringFactory больше не загружает cucumber.xml, и вам необходимо включить @ContextConfiguration("classpath*:cucumber.xml") во ВСЕ ваши классы определения шагов.

5 голосов
/ 24 февраля 2012

Быстрый поиск в Google по запросу "интеграция с огурцом" приводит меня здесь и здесь .Если вы используете cuke4duke, это выглядит гораздо более простым способом.

Пример показывает, что по умолчанию cuke4duke будет загружать cucumber.xml из базы вашего classpath.Это конфигурационный файл Spring, который должен включать component-scan для классов, помеченных @StepDefinition.

. Вам не нужно предоставлять SpringFactory, вам не нужно будет использовать аннотацию @RunWith,просто предоставьте некоторую конфигурацию Spring и одно или несколько свойств jvm.

1 голос
/ 04 октября 2012

Я только что видел ваш вопрос.Скорее всего, зависимость от модуля cucumber-spring отсутствовала.Я обновил репозиторий, и теперь все зависимости должны быть в порядке (я использую ivy).

0 голосов
/ 10 июля 2015

Проблема в том, что определенные версии Spring работают только с определенными версиями Cucumber-Spring и Cucumber-JVM. Нахождение выигрышной комбинации может занять два дня, играя с банками. Поэтому начните со сценария BDD «Hello World», в котором используется простая инъекция, которая, как вы знаете, будет работать, потому что вам придется настраивать эти банки до тех пор, пока не получите работающую среду.

Самый простой способ - сопоставить последнюю версию Spring с последней версией Cucumber-Spring. Новые версии Spring лучше поддерживаются. Если вы не можете просто обновить Spring, используйте веб-сайты, которые описывают maven-зависимости между различными версиями Cucumber-Spring и версией Spring, с которой вы работаете.

Если вы хотите придерживаться своей прежней версии Spring (плохая идея, боль от изменений будет только усугубляться), другой стратегией является использование JBehave для тестирования BDD.

...