2017-01-19 73 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:

在TestContextConfig我正在導入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 argurments提供此屬性是一種首選方式。

+0

很高興它解決了你的問題! – asg