次のような統合テストを設定しています。
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {XmlFileSplitter.class, ...})
public class XmlFileSplitterTests { ..
にはXmlFileSplitter
、 で注釈が付けられたプロパティが@Value("${default.output.file}")
あり、その値は から取得されますapplication.properties
。アプリを正常に実行している場合、これは正常に機能します。ただし、統合テストを実行すると、値は解決されません (" ${default.output.file}
")。プレースホルダーを解決するためのコードをデバッグすると、アプリを正常に実行してorg.springframework.beans.factory.support.AbstractBeanFactory embeddedValueResolvers
いるときに が含まれているのに、テストで が空であることに気付きました。PropertySourcesPlaceholderConfigurer
通常の実行ではPropertyPlaceholderAutoConfiguration
spring-boot-autoconfigure から propertyplaceholder を構成する必要があるのSpringApplicationConfiguration
を見て、統合テスト用に構成するには、このクラスをクラスに追加する必要があると考えました。私はそれを追加しました:
@SpringApplicationConfiguration(classes = {XmlFileSplitter.class, ... , PropertyPlaceholderAutoConfiguration.class})
そして、実際にアノテーションを解決@Value
します(application.propertiesの値を使用)。
しかし、これは間違っていると感じており、このクラスの知識をテストに追加しています。私の質問は、これを適切に解決する方法ですか?