5

@Resource アノテーションを使用してインジェクション用の変数にフラグを立てる SpringJUnit4ClassRunner を使用する既存のテストケースがあります。

@Resource は、将来別の DI フレームワークが使用される可能性があるため使用されます。( @Resource vs @Autowired )

現在、Cucumber ランナーを使用して BDD テスト ケースの作成を開始しています。ただし、DI は発生していないようです。(@Autowired は機能しますが、@Resource は機能しません) 理由を知っている人はいますか?

4

1 に答える 1

5

(Cucumber-JVM を使用していると仮定しています)

SpringJUnit4ClassRunnerを使用する代わりに、代わりにCucumberランナーを使用する必要があります。

@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 に答える