如何在JUnit 5中测试公共方法时模拟私有方法。
class School{
@Autowired
private SchoolRepo schoolRepo;
private String getSchoolName(String name){
return "New Name :"+schoolRepo.findByName(name);
}
public String getFullNameWithSchool(){
String schoolName = getSchoolName("HMS");
String fullName = "SK "+schoolName;
return fullName;
}
}
字符串
我想测试(使用JUnit 5)getFullNameWithSchool
方法并模拟私有方法getSchoolName
方法。
2条答案
按热度按时间8qgya5xd1#
为了给予一个代码示例,其中包含注解中给出的要点,
字符串
在你的测试中
型
请注意,我觉得使用固定的String完成查询有点奇怪。“
School
“听起来像一个域类,我希望它有几个,每个都有一个名称。我也不希望它自动连接仓库,也许你想创建一个SchoolService
连接仓库,并为查询仓库的给定School
提供名称。fiei3ece2#
前言:
你不能用JUnit模拟私有方法。
你可以用PowerMock来模仿它们。
解决方法是使用反射,但不建议这样做。
解决方案:
私有方法应该在公共方法中调用。然后你可以测试公共方法,包括私有方法。
举个例子:如果你有一个服务,测试它的公共方法。如果它的公共方法调用私有方法,它们也会被自动测试。