не может внедрить значение @value, определенное в application.properties при использовании фиктивного теста - PullRequest
0 голосов
/ 11 января 2019

Как я могу ввести значение, определенное в application.properties, когда я делаю тест на мокито.

Service.java

@Override
public String getUseLanguage() {
    return applicationProperties.getLanguage();
}

ApplicationProperties.java

public class ApplicationProperties {

    @Value("${language}")
    private String Language;

    public String getLanguage() {
        return Language;
    }

application.properties

Language = EN;

Мой тестовый пример:

@RunWith(MockitoJUnitRunner.class)
public class TimChannelServiceTest {
@Mock
private ApplicationProperties applicationProperties;

@InjectMocks
private Service Service;

@Test
public void getUseLanguage(){
    assertEquals(applicationProperties.getLanguage(),Service.getUseLanguage());
    }
}

кажется, @ значение не внедрено в ApplicationProperties, оба applicationProperties.getLanguage () и Service.getUseLanguage () равны нулю.

Может кто-нибудь сказать мне, как решить эту проблему

Ответы [ 3 ]

0 голосов
/ 11 января 2019

В вашем тесте вы издеваетесь над полем applicationProperties и не предоставляете никаких действий. Это имеет смысл, что методы, вызываемые по возвращении null.
Кроме того, почему вы издеваетесь, если хотите, чтобы свойства вводились так, как должно быть?

Чтобы проверить значения application.properties, аннотируйте свой класс с помощью @SpringBootTest, который загрузит контекст Spring и таким образом будут загружены свойства среды.

0 голосов
/ 11 января 2019

Вам нужно загрузить контекст пружины, чтобы @value работал. Аннотируйте свой класс с помощью @SpringBootTest. Также вместо того, чтобы издеваться над вашим ApplicationProperties. И имейте свойство language, определенное в вашем файле свойств теста.

0 голосов
/ 11 января 2019

Если вы говорите о spring @Value, то вам нужно запускать тесты с аннотациями @RunWith (SpringJUnit4ClassRunner.class) вместе с контекстным файлом, который будет внедрять класс свойств приложения.

    @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:test-context.xml")
public class MyTest {
    }

Однако в вашем случае вы издеваетесь, поэтому вы не можете ожидать, что он предоставит пружинные коммунальные услуги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...