[英]How to mock private method of an abstract class
public abstract class ClassA extends {
public String getName(){
String lastName = getLastName();
return "Language"+lastName;
}
private String getLastName(){
return "Java";
}
}
我正在为 getName 编写测试。 我想模拟 getLastName 方法。 我该怎么做?
您可以尝试从该答案中获取方法。
但是,如果私有方法中的逻辑很复杂,并且 class 需要对其进行单独测试,那么肯定表明您需要进行一些重构。
根据 SOLID 原则,您的私有方法应该是公共的,并且也应该放在派生的 class 中。
public abstract class ClassA {
private final LastNameProvider provider;
public ClassA(LastNameProvider provider) {
this.provider = provider;
}
public String getName() {
String lastName = provider.getLastName();
return "Language"+lastName;
}
}
public interface LastNameProvider {
String getLastName()
}
public class JavaLastNameProvider {
private String getLastName(){
return "Java";
}
}
使用这种方法,您可以轻松地将ClassA
中的provider
替换为另一个进行测试,或者您可以使用Mockito
等模拟它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.