2016-03-22 9 views
1

は私が4つの典型的なソースフォルダと春のプロジェクトを持っています。アプリケーションを実行すると、Springはアプリケーションコンテキストファイルをmain/resourcesにフェッチし、Junitテストを実行するとapplication-context.xmlファイルをtest/resourcesにフェッチします。 Springはapplication-context.xmlファイルを適切にフェッチしますか、それとも何らかの設定が関係していますか?春のアプリケーションコンテキスト - <code>main/src</code>、<code>main/resources</code>、<code>test/src</code>と<code>test/resources</code> - メインとテストフォルダ

答えて

1

​​またはStrutsで他のプロジェクトを実行しようとすると、それぞれのフォルダからリソースが選択されます。それは春とは関係がありません。これは、あなたが使用しているMavenや他のビルドシステムの世話をします。

main/src , main/resources , test/src , test/resources 

これらのフォルダは、mavenプロジェクトまたはgradleプロジェクトを作成するときに標準で使用されます。

+0

私はmavenビルドを実行していませんが、eclipseからjunitを実行しています。 Mavenはこの背後でこれを世話していますか?これはすでに既存のアプリケーションであったため、新しいプロジェクトを作成するときにこの動作を達成するための設定が必要かどうかを確認したいと考えました。 –

+0

@PunterVickyあなたの 'junit'を実行すると' junit'ライブラリはテストフォルダ内のリソースを常に探します。テストを 'Run as-> Junit'として実行すると、IDEはクラスパスのjunitを使ってテスト。 'Junit'はテストフォルダからリソースを選択します – Pragnani

+0

Thanks Pragnani !! –

1

アプリケーションは、アプリケーションコンテキストがどこにあるかをSpringに通知します。 Webアプリケーションは、web.xmlにContextLoaderListenerをコンフィグレーションすることでこれを行います。 アプリケーションのコンテキストがどのように読み込まれるかのテストごとに、@ContextConfigurationアノテーションは、コンテキストがどの場所から読み込まれるか、または注釈付きクラスからロードされる方法を指定します。例えば

私は

@ContextConfiguration(loader = AnnotationConfigContextLoader.class, 
classes = MyTest.ContextConfiguration.class) 
public class MyTest { 
    @Autowired MyStuff stuff; 

    static class ContextConfiguration { 
     @Bean public MyStuff getMyStuff() { 
      return new MyStuff(); 
     } 
    } 
} 

を使用するようにテストを設定した場合、その後のMyTestはに注入するかを決定するために、テストにアノテーションを使用して、指定されたContextConfigurationを使用して、これらのフィールドに値を設定します。クラスパス内のxml構成は完全に無視されます。

コンテキストローダーは、コンテキストをロードする場所を指定することもできます。org.springframework.test.context.ContextLoaderのドキュメントを参照してください。

使用しているSpringのバージョンがわかりません。 3.0より前のバージョンでは、スプリング認識テストが拡張された階層の一部であったorg.springframework.test.AbstractSpringContextTestsクラスの抽象メソッドloadContextを実装して、テスト・コンテキストを管理しました。

+0

私は、junitが適切なリソースを選ぶ方法について考えています。つまり、リソースをテストリソースフォルダとsrcリソースフォルダに配置するときです。はい、設定ファイルのクラスパスを指定しますが、ソースではなくテストからどのように検索するのですか – Pragnani

+0

また、バネフレームワークを使用せずにスタンドアローンのMavenプロジェクトを実行してみてください。テストリソースとsrcリソースの両方にいくつかのリソースを組み込み、cpにjunitを組み込み、このリソースを使用するテストクラスを作成し、どのリソースjunitがピッキングしているかを調べるためにテストを実行してください。 – Pragnani

+0

@Pragnini:特定の質問は、使用するコンテキスト。春はMavenやIDEで与えられたクラスパス上にあるものにそれを残しません。 –

関連する問題