Java单元使用Mockito进行测试。在函数内部函数调用
问题描述:
假设我有以下类:Java单元使用Mockito进行测试。在函数内部函数调用
public class Math {
public int mult(int a, int b) {
return 4;
}
public int mul (int a, int b) {
return mult(a,b);
}
}
而下面的测试类:
public class TestMockito {
Math testMath;
@Before
public void create() {
testMath = *mock*(Math.class);
when(testMath.mult(1,2).thenReturn(2);
}
@Test
public void test() {
System.out.println(testMath.mul(1,2));
}
}
为什么叫test()
mul(1,2)
不使用when(testMath.mult(1,2).thenReturn(2);
?
是否有任何其他方式来模拟正在测试的另一种方法内使用的方法?
干杯
答
你通常不嘲笑被测的代码(除非它是一个抽象类)。
您通常会嘲笑您的CUT与之通信的其他类(依赖关系)。
为什么你的测试不起作用(如你所期望的)是模拟不是真正的类的对象(这就是我们为什么嘲笑它的原因....)。它已经由嘲讽框架而不是得到,其行为与原始代码相似,但是像它已经配置用于测试。
如果你真的想被称为在模拟真实的方法(这是不是你想要的大部分时间),你需要告诉说的Mockito创建模拟时:
mock(ClassToBeMocked.class,Mockito.CALL_REAL_METHODS);
这里'Math'是被测试的类。你并不想嘲笑正在测试的班级。 – Jobin
@Jobin奇怪。我从以下地址学习:https://www.youtube.com/watch?v = 79eXGJ2rKZs – Anant