2012-05-12 6 views
3

У меня есть тестовые примеры, которые используют SpringJUnit4ClassRunner, которые используют аннотацию @Resource для обозначения переменной для инъекции.Весенние зависимости не впрыскиваются для бегуна для огурцов

@Resource используется как еще один каркас DI, который может быть использован в будущем. (@Resource vs @Autowired)

Теперь я начал писать тестовые чехлы BDD с помощью бегуна Cucumber. Однако DI, похоже, не происходит. (@ Работает, но не @Resource) Кто-нибудь знает, почему нет?

+0

Согласно ссылке 'Ресурс против Autowired', они оба не рекомендуются с весны 3.0 - поэтому перейдем к аннотации' Inject' от JSR-330. –

ответ

5

(я предполагаю, что вы используете огурец-JVM)

Вместо использования SpringJUnit4ClassRunner, вы должны использовать вместо этого Огурцов бегуна.

@RunWith(Cucumber.class) 

Для использования этого вам понадобятся следующие зависимости:

<dependency> 
     <groupId>info.cukes</groupId> 
     <artifactId>cucumber-java</artifactId> 
     <version>${info.cukes.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>info.cukes</groupId> 
     <artifactId>cucumber-junit</artifactId> 
     <version>${info.cukes.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>info.cukes</groupId> 
     <artifactId>cucumber-spring</artifactId> 
     <version>${info.cukes.version}</version> 
     <scope>test</scope> 
    </dependency> 

Это будет искать cucumber.xml в вашем пути к классам. Этот XML представляет собой просто конфигурацию XML-конфигурации весны. Шахта довольно прямо вперед, и содержит:

<context:component-scan base-package="cucumber.runtime.java.spring"/> 
<context:annotation-config/> 

<!-- wire beans required for testing --> 
<import resource="classpath*:/context.xml"/> 

Когда вы запускаете тесты, вы должны увидеть Spring нагрузки cucumber.xml, а затем импортировать context.xml.