我正在尝试将 spring 的 DI 集成到一个简单的 cucumber-java-skeleton 项目中。
我正在使用:cucumber-java/spring/junit 的 1.2 版本和 Spring 的 3.2.8.RELEASE
我想使用我在“Cucumber for Java Book”中读到的 spring 注释 - 特别是两个标签:
@Component
@Scope("cucumber-glue")
据我了解,使用这些注释应该取代手动创建 bean
这是我的“cucumber.xml”中相关的部分(不是标题):
<context:component-scan base-package="hooks"/>
<context:annotation-config/>
我将其理解为 spring 它将在包名称“hooks”中查找任何这些注释。
这是我的钩子类 - 它只是在 @Before 和 @After 中打印
package hooks;
//assorted imports
@Component
@Scope("cucumber-glue")
public class TestHooks {
@Before
public void beforeCallingScenario() {
System.out.println("***********BEFORE **** About to start the scenario.");
}
@After
public void afterRunningScenario(Scenario scenario) {
System.out.println("*********** AFTER ****Just finished running scenario: "
+ scenario.getStatus());
}
当我运行测试时,我相信它实际上是在找到类,因为我看到它打印到我的控制台:
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@411e6b7e: defining beans [testHooks...
但是当我运行测试时,它们不会运行.. 但是,如果我在 @CucumberOptions 注释中定义这个包;他们被接走。
我也相信它们正在被实例化,因为如果我尝试两者都做:那就是在 @CucumberOptions 和 cucumber.xml 文件中使用具有相同包名的胶水选项 - 我得到以下异常
Causedby:org.springframework.beans.factory.NoUniqueBeanDefinitionException:No qualifying bean of type [hooks.testHooks] is defined: expected single matching bean but found 2: testHooks,hooks.TestHooks
我的怀疑是“黄瓜胶”范围没有被应用
我缺少什么(配置或其他)才能正常工作?