2017-01-19 5 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 загружает файлы некоторых свойств из активов папка, как это:

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

Обратите внимание, что я не использую classpath: но 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-мер.

+0

Рад, что он решил вашу проблему! – asg