2015-06-18 2 views
-1

Я разрабатываю приложение (Java), и есть тест, который он мне не дает. Эта ошибка заключается в том, что я хочу прочитать значение, которое находится в файле свойств, но это значение равно null. Если я выполняю свое приложение, пропуская тесты, он работает нормально, он без проблем считывает значение файла свойств. сделать что-то другое, чтобы прочитать это свойство в тестовом пакете?Тест не читает значение файла свойств

Мой тестовый класс

@Test 
public void shouldBeControllerInitial() { 

    String index = initController.init(); 

    assertEquals("Should be same to the index, it's main page", INDEX, 
       index); 
} 

Мой класс контроллера

@Controller 
@RequestMapping(value = "/") 
public class InitController { 

    @Value("${path.index}") 
    private String index; 

    @RequestMapping(method = RequestMethod.GET) 
    public String init() { 

     return index; 
    } 

} 

Мой конфиг класс

@Configuration 
@PropertySource("classpath:/path.properties") 
public class Config { 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){ 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 

сообщение об ошибке

java.lang.AssertionError: Should be same to the index, it's main page 
expected:<index> but was:<null> ... 

Может кто-нибудь помочь?

+0

Ваш вопрос неясен, но вы можете создать вам условие для использования конкретного файла свойства только для модульного тестирования: http://stackoverflow.com/questions/24231773/specifying-a-custom-log4j-properties-file-for-all-of-junit-tests-run-from-eclips/24315819 # 24315819 – Raedwald

+0

Я добавил файл свойств внутри тестового пакета, но он не work – Celer

ответ

0

Как у нас есть только тело теста и не весь исходный файл, так что я могу только предположить:

  • проверить, что в тесте вы инъекционный initController и не создавая его с new
  • убедитесь, что тест использует свой Config (вы должны иметь аннотацию, как это: @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = Config.class)
+0

Спасибо вам за ваш ответ. О InitController У меня есть инъекция с помощью @InjectMock Я поместил внутри своего класса Config, что вы положили ('@ContextConfiguration (loader = AnnotationConfigContextLoader.class, classes = Config.class)'), но он продолжает иметь ошибку, мой тест находится в красном jejeje. – Celer

+0

Скорее всего, проблема кроется в том, что вы используете '@ InjectMocks' и вместо реального объекта из контекста Spring вы получаете макет, который просто ничего не делает и возвращает« null »в качестве возвращаемого значения для каждого метода. Это просто предположение. Пожалуйста, укажите источник тестового класса, может быть, я или другие люди смогут помочь. –

Смежные вопросы