2017-01-19 12 views
1
は、プロジェクト内のマイフォルダ構造がある

:資産は次のようにフォルダからロードファイル

./assets/strings.properties 
./module1/src/main/java/{some-packages}/ContextConfig.java 
./module1/src/test/java/{some-packages}/TestContextConfig.java 
./module1/pom.xml 
./module2/pom.xml 
./pom.xml 

ContextConfigに、私はいくつかのプロパティにファイルをロード:私はclasspath:を使用していないよ

@PropertySources({ 
     @PropertySource("file:assets/strings.properties") 
}) 
public class ContextConfig { 
/*some code...*/ 
} 

お知らせしかしfile:

私はContextConfigをインポートしていますが、埋め込みmongoもこのようにアクティブにしています:

@Configuration 
@Import({ 
     ContextConfig.class, 
     MongoAutoConfiguration.class 
}) 
public class TestContextConfig { 
} 

私は私のテストクラスでそれを使用しよう:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = TestContextConfig.class) 
public class ProofOfConcept { 
/*some code...*/ 
} 

私はそれがプロパティファイルを見つけることができないので、FileNotFoundExceptionをを取得しますが、アプリケーションは(ないテストで)正常に開始されたとき、すべてがうまく機能しています。 例外は私が取得:

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [{some-packages}.config.TestContextConfig]; nested exception is java.io.FileNotFoundException: assets\strings.properties (System nie może odnaleźć określonej ścieżki) 
    at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:495) 
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:276) 

どのように私はテストで資産フォルダからファイルを読み込むことができますか?

答えて

1

プロパティファイル -

./assets/strings.properties 

は、テストコンテキストの外に表示されています。アプリケーションの外部プロパティファイルを読み込む手法を使用する必要があります。

Spring application context external properties?をご覧ください。これはあなたの問題を解決するはずです。プロパティファイルの場所をVM引数として指定することも、テストでハードコードすることもできます。 VMプロパティを使用してこのプロパティを指定するのが望ましい方法です。

+0

あなたの問題を解決してうれしい! – asg

関連する問題