2

アプリケーションコンテキストファイルを交換しようとしているので、実際の IDE を使用して IDE でテストしたり、JUnit を使用して IDE でテストファイルをテストしたりできます。

必要最小限の例は次のようになります。

mainConfig.xml

<context:component-scan base-package="myPackage" />
<bean id="myBean" class="my.class"/>

testConfig.xml

<context:component-scan base-package="myPackage" />
<bean id="myBean" class="my.test.class"/>

アプリケーションコンテキストを処理する私のJavaコードは以下に似ています(ただし、実際にはシングルトンです)

public final class MyLoader {

    private ApplicationContext context;

    public MyLoader(){
        context = new ClassPathXmlApplicationContext(
            "classpath:/hardcoded/path/to/mainConfig.xml");
    }

    public <T> T getComponent(final Class<T> type) {
        return (T) context.getBean(type);
    }
}

アプリケーションにはさまざまなエントリ ポイントがあるため、MyLoader はコード内の複数のポイントから呼び出されます。

私のJUnitテストコード

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:/hardcoded/path/to/testConfig.xml")
public final class Foo{}

JUnit テストを実行すると、(JUnit ファイルの @ContextConfiguration により) testConfig.xml が読み込まれますが、(ClassPathXmlApplication により) mainConfig.xml も読み込まれます。2 つのファイルが異なるため、衝突が発生します。

このような不一致が発生しないように、これらすべてを配線する正しい方法は何ですか?

4

2 に答える 2

-1

Maven と JavaConfig の使用を検討する必要があります。XML ファイルは 2000 スタイルを使用して、時代を作るためにスタイルを更新する必要があります。JavaConfig と Maven を見ると、簡単に実行できます。

于 2013-03-21T13:10:03.480 に答える