1

src/test/java のテスト ハーネス内から、src/main/resources ディレクトリにある applicationContext.xml を使用したいと考えています。どうすればロードできますか? 私が試してみました:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class TestService {
...
}

しかし、ファイルが見つからないというエラーが発生します。私はMavenとSpringを使用しています。ありがとう。

4

4 に答える 4

1

これが私のやり方です。あなたにとって最善の方法かもしれませんし、そうでないかもしれません。主なことは、Eclipse と Maven の両方で動作することです。

  • applicationContext-xxx.xmlプロジェクトごとに各ファイルのコピーを 1 つだけ保持します。それらまたはその内容を決してコピーアンドペーストしないでください。メンテナンスの悪夢が発生します。

  • すべての環境設定をプロパティ ファイル (例:database-prod.propertiesおよびdatabase-test.properties) に外部化しsrc/main/resourcessrc/test/resourcesそれぞれ および に配置します。次の行をアプリ コンテキストに追加します。

    < context:property-placeholder location="classpath:**/*.properties"/>

  • すべてのテスト クラスのスーパークラスを作成し、コンテキスト構成で注釈を付けます。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@Ignore
public class SpringEnabledTest {

  // Inheritable logger
  protected Logger logger = LoggerFactory.getLogger(this.getClass());

}
  • 構成に追加<additionalClasspathElements>して、maven-surefire-pluginsurefire が appContext と適切なプロパティ ファイルを確実に取得するようにします。ここに例を作成しました。

  • アプリ コンテキスト ファイルの場所をsrc/test/resourcesEclipse クラスパスに追加して、Eclipse でも単体テストを実行できるようにします。

  • 決してsrc/main/resourcesEclipse クラスパスに追加しないでください。これは、Maven が追加のソース ファイルをパッケージ化するのに便利な場所にすぎません。Eclipse には関係ありません。私はよくこのディレクトリを空白のままにして、フォルダーの外に追加のフォルダー (env/DEV、env/UAT、env/PROD など)src/を作成し、ビルド サーバーにパラメーターを渡し、どのフォルダーからファイルをコピーする必要があるかを通知しますsrc/main/resources

于 2013-06-05T01:32:10.890 に答える