[英]Junit Test case Spring boot controller returning null value in ResponseEntity
[英]private variables are null that are assigned using @Value in spring boot junit case
我有以下 java class ,我必须为此编写 junit 测试。
@Service
class My {
@Value("${emp.name}")
private String name;
public void printName() {
StringBuilder sb = new StringBuilder(name);
//do some stuff
}
}
现在我正在为此 java class 编写一个测试 class ,如下所示。
@PrepareforTest({My.class})
public class MyTest {
@InjectMocks
My my;
@Test
public void printNameTest() {
//Test code
}
}
这里的问题是我在StringBuilder sb = new StringBuilder(name); 上得到 null 指针异常; 测试正在中断。
任何人都知道如何使用 @Value 在测试中加载属性值或将值传递给实例。 我尝试使用反射,但它也给出了错误。
不要使用字段注入,而是在构造函数中传递它。 使测试更容易。
@Service
class My {
private String name;
public My(@Value("${emp.name}") String name) {
this.name = name;
}
public void printName() {
StringBuilder sb = new StringBuilder(name);
//do some stuff
}
}
或者,使用 ReflectionTestUtils。 请参阅: https://stackoverflow.com/a/17355595/2082699
没有注释告诉 Mockito @InjectMocks 只注入该值而不执行任何 mocking 或间谍活动。
所以你有两个选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.