2

我正在尝试将 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

我的怀疑是“黄瓜胶”范围没有被应用

我缺少什么(配置或其他)才能正常工作?

4

0 回答 0