main
とtest
の両方のツリーにsome.xml
が存在するかどうかを確認してください。両方に存在する場合、test
ツリー内のツリーは、main
ブランチのツリーを上書きする必要があります。
はsome.xml
あなたが実際にロードされているが、私はプロパティを管理するために、より近代的な方法があることを認識し、これは簡単で、ユニットテストのために指定することは容易であるなど
<context:property-placeholder location="classpath:some.properties"/>
として、property-placeholder
を持っていることを確認してください。
私は、クラスパス上の設定ファイルでは非常に扱いにくいので、私は@ContextConfiguration
の機能を利用して各テスト用に専用の最小構成を作成したいと思っています。それが動作する方法は、各テストクラスに対して、慣例により、テストクラスパッケージと同じ相対ディレクトリパスの設定ファイルを探し、テストケースの後ろに名前を付けることです。そうすれば、各テストケースの設定とプロパティを完全に制御できます。あなたはそれを試してみるかもしれません - それは共有設定ファイルによって引き起こされる混乱を排除することができます。それを行うには、@ContextConfiguration
の値を削除します。次に、com.myCompany.SomeTest
のテストケースがsrc/test/java/com/myCompany/
にあるとします。ディレクトリsrc/test/resources/com/myCompany
にSomeTest-context.xml
というファイルを作成し、そのユニットに必要な最小限の設定をファイルに入れます。 @ContextConfiguration
は、その場所でその名前の設定ファイルを見つけてテストに使用します。私が触れた慣例の一部ではありませんが、各テストのプロパティファイルを同じディレクトリに配置し、そのテストに必要なプロパティを指定します。テストケース名の後ろに指定します(例:SomeTest.properties
)。そうした場合、あなたは
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration // no parameters
public class FileEncryptionUtilsTest { ...
をかけることになり、あなたのテストケースの上部に
<context:property-placeholder location="classpath:com/myCompany/SomeTest.properties"/>
:あなたのテストケース固有のコンテキストでは、あなたのテスト固有のプロパティを取得するには、このようproperty-placeholder
の行を追加します。共有コンテキストに追加されるものの副作用や、同じ名前の複数のコンテキストファイルから生じるエラーを処理することなく、豆と値をあなたの心のコンテンツに注入することができます。
ここで重要な利点は、アプリケーションコンテキストファイルによって表される統合ではなく、ここでユニットをテストすることです。単体テストでアプリケーションコンテキストファイルを共有する場合は、Beanと一緒にアプリケーションコンテキストをテストしています。これは単体テストの必要性ではなく、統合テストの目標のほうです。