5

我有使用 SpringJUnit4ClassRunner 的现有测试用例,它使用 @Resource 注释来标记变量以进行注入。

@Resource 用作将来可能使用的另一个 DI 框架。(@Resource 与 @Autowired

现在我已经开始使用 Cucumber runner 编写 BDD 测试用例。然而,DI 似乎没有发生。(@Autowired 有效,但@Resource 无效)有人知道为什么不吗?

4

1 回答 1

5

(我假设您使用的是 Cucumber-JVM)

而不是使用SpringJUnit4ClassRunner,您应该使用Cucumber runner。

@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 只是一个 spring bean 配置 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

于 2012-07-17T21:08:05.090 回答