2

次のような統合テストを設定しています。

@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

通常の実行ではPropertyPlaceholderAutoConfigurationspring-boot-autoconfigure から propertyplaceholder を構成する必要があるのSpringApplicationConfigurationを見て、統合テスト用に構成するには、このクラスをクラスに追加する必要があると考えました。私はそれを追加しました:

@SpringApplicationConfiguration(classes = {XmlFileSplitter.class, ... , PropertyPlaceholderAutoConfiguration.class})

そして、実際にアノテーションを解決@Valueします(application.propertiesの値を使用)。

しかし、これは間違っていると感じており、このクラスの知識をテストに追加しています。私の質問は、これを適切に解決する方法ですか?

4

0 に答える 0