Java 如何在JUnit测试中重写类行为
我正在尝试为类a中的一个方法创建JUnit测试,该方法创建了类B的一个实例。由于我想隔离该方法的行为,我想用更简单的方法覆盖a的测试套件中B的方法,这将用于测试a 我已经尝试使用Mockito的Spy来实现这一点,但是据我所知,它只允许在方法调用时返回静态值,但是我需要用更简单的外部逻辑替换复杂的外部逻辑,同时考虑传递的参数Java 如何在JUnit测试中重写类行为,java,unit-testing,testing,junit,mockito,Java,Unit Testing,Testing,Junit,Mockito,我正在尝试为类a中的一个方法创建JUnit测试,该方法创建了类B的一个实例。由于我想隔离该方法的行为,我想用更简单的方法覆盖a的测试套件中B的方法,这将用于测试a 我已经尝试使用Mockito的Spy来实现这一点,但是据我所知,它只允许在方法调用时返回静态值,但是我需要用更简单的外部逻辑替换复杂的外部逻辑,同时考虑传递的参数 最好的方法是什么?如果我没有弄错,代码示例可能如下所示 public class A { public T doSth(){ String resul
最好的方法是什么?如果我没有弄错,代码示例可能如下所示
public class A {
public T doSth(){
String result = new B().callMethod();
}
}
如果您能够修改源代码,那么下面的方法可能会非常有用,以使测试更易于测试
public class A {
private MyInterface b;
public A(MyInterface b){
this.b = b;
}
public T doSth(){
String result = b.callMethod();
}
}
干杯听起来您必须学习模拟您需要创建B的模拟实例,然后根据您要测试的场景对B上的调用返回不同的响应: