当我进行mockito测试时,如何注入(inject)application.properties中定义的值。
服务.java
@Override
public String getUseLanguage() {
return applicationProperties.getLanguage();
}
ApplicationProperties.java
public class ApplicationProperties {
@Value("${language}")
private String Language;
public String getLanguage() {
return Language;
}
应用程序属性
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());
}
}
似乎@Value没有注入(inject)ApplicationProperties,applicationProperties.getLanguage()和Service.getUseLanguage()都是null。
谁能告诉我如何处理这个问题
最佳答案
您在测试中模拟了 applicationProperties
字段,并且没有提供任何行为。在返回 null
时调用的方法是有意义的。
此外,如果您希望按应有的方式注入(inject)属性,为什么要模拟呢?
要测试 application.properties
值,请使用 @SpringBootTest
注释您的类,该类将加载 Spring 上下文,并以这种方式加载环境属性。
关于java - 使用模拟测试时无法注入(inject)application.properties中定义的@value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54150998/