“我的服务”类使用的属性设置为application.properties
@Service
public class Service {
@Value("${my.prop}")
private String prop;
public Response doWork(String param1,String param2){
System.out.println(prop); //NULL!!!
}
}
我想测试一下并设置自己的值:
测试类:
@RunWith(MockitoJUnitRunner.class)
@TestPropertySource(locations = "application.properties",properties = { "my.prop=boo" })
public class ServiceUnitTest {
@InjectMocks
private Service service;
@Test
public void fooTest(){
Response re = service.doWork("boo", "foo");
}
}
但是当我运行测试时,该值为null(甚至不存在于application.properties中的值)。
答案 0 :(得分:0)
我没有MockitoJUnitRunner的经验,但是我可以使用PowerMockRunner来实现。
使用测试配置设置应用程序上下文,然后将Bean从应用程序上下文自动连接到测试类中。您也不需要@TestPropertySource批注中的“ locations =”位。
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringRunner.class)
@TestPropertySource(properties = { "my.prop=boo" })
public class ServiceUnitTest {
@TestConfiguration
static class ServiceUnitTestConfig {
@Bean
public Service service() {
return new Service();
}
}
@Autowired
Service service;
@Test
public void fooTest(){
Response re = service.doWork("boo", "foo");
}
}