[英]How to override class behaviour in a JUnit test
我正在尝试为类A中的方法创建JUnit测试,该方法创建类B的实例。由于我想隔离该方法的行为,因此我想用更简单的方法在A的测试套件中覆盖B的方法,即将用于测试A的目的。
我尝试使用Mockito的Spy进行此操作,但是据我了解,它仅允许在方法调用时返回静态值,但是在考虑传递的参数的同时,我需要用更简单的逻辑替换复杂的外部逻辑。
解决此问题的最佳方法是什么?
如果我说对了,代码示例可能如下所示
public class A {
public T doSth(){
String result = new B().callMethod();
}
}
为了使A更具可测试性,如果您能够修改源代码,则以下方法可能会有用。
public class A {
private MyInterface b;
public A(MyInterface b){
this.b = b;
}
public T doSth(){
String result = b.callMethod();
}
}
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.