【发布时间】:2020-08-05 02:09:15
【问题描述】:
我需要测试私有方法。以下方法的正确测试方法是什么?我尝试使用 Mockito when.. 但是我如何模拟私有方法。我认为我们不能模拟私有方法。
private classObject privateMethod(Message message){
try{
Objectmapper mapper = new ObjectMapper();
return mapper.readValue(message.getBody(), ClassName.class);
}catch(){
throw new Exception();
}
}
//I am getting an exception while testing
byte[] body = {10,-11,12,14,15};
MessageProperties msgProp = new MessageProperties();
Message message = new Message(body, msgProp);
// the above message is passed as parameter to function through
// which private method is called
objectxyz.execute(message);
// execute method
public void execute(Message message){
objectxyz xyz = privateMethod(message);
objectabc abc = service.someMethod(xyz);
List<object> list = someAnotherMethod(abc, xyz);
}
// I tried below code in my test case and have used
// @Mock private ObjectMapper objectMapper;
Mockito.when(objectMapper.readValue(body, ClassName.class)).thenReturn(classObject);
【问题讨论】:
-
好的,现在我理解了这个概念,但是如果我们想测试公共方法,即执行,包括返回私有方法和私有方法返回 mapper.readValue(message.getBody(), ClassName.class);失败了我们如何才能成功测试执行方法?
标签: java spring-boot junit mockito