2017-02-22 46 views
1

Я хотел бы создать интеграционный тест, в котором Spring Boot будет считывать значение из файла .properties, используя @Value аннотация.
Но каждый раз, когда я бегу тест мое утверждение не потому, что весна не может прочитать значение:Тесты интеграции Spring Boot не читают файлы свойств

org.junit.ComparisonFailure: 
Expected :works! 
Actual :${test} 

Мой тест:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class}) 
public class WebTests { 
    @Configuration 
    @ActiveProfiles("test") 
    static class ConfigurationClass {} 

    @Component 
    static class ClassToTest{ 
     @Value("${test}") 
     private String test; 
    } 

    @Autowired 
    private ClassToTest config; 

    @Test 
    public void testTransferService() { 
     Assert.assertEquals(config.test, "works!"); 
    } 
} 

application-test.properties под Src/основной/ресурс пакет содержит:

test=works! 

В чем может быть причина этого поведения и как его исправить?
Любая помощь очень ценится.

+1

Что должно выглядеть «ClassToTest»? У вас есть '@ SpringBootTest' где угодно? Угадайте, что ваши тесты не выполняются как тест Spring Boot, поэтому свойства приложения не загружаются. Если это происходило, установка активного профиля на 'test' должна была быть достаточной для загрузки' application-test.properties' –

ответ

2

Вы должны загрузить application-test.properties с помощью @PropertySource или @TestPropertySource

@RunWith(SpringJUnit4ClassRunner.class) 
@TestPropertySource(locations="classpath:application-test.properties") 
@ContextConfiguration(classes = {WebTests.ConfigurationClass.class, WebTests.ClassToTest.class}) 
public class WebTests { 

} 

для получения дополнительной информации: Посмотрите на эту Override default Spring-Boot application.properties settings in Junit Test

0

Кроме выше отмеченного правильного ответа, есть другая природа путь для загрузки application-test.properties: Задайте тестовый прогон «profile» для «test».

Отметьте ваши тестовые примеры с:

@ActiveProfiles("test") 
@RunWith(SpringJUnit4ClassRunner.class) 

application-xxxx.properties является именованием для свойства различного «профиля».

«Профиль» также полезен в конфигурации боба.