模拟使用mockito的方法确保嘲笑的方法永远不会被调用?我有主类,其中包含我想要编写单元测试的一些代码,我有一个单元测试类MainTest,其中包含主类的单元测试。嘲笑使用Mockito的方法
例如:
来源类别:
package abc;
public class Main {
public int check1() {
int num = 10;
num = modify(num);
return num;
}
public int modify(int num) {
if (num % 10 == 0) return num/10;
return -1;
}
}
JUnit测试(使用的Mockito)
package abc;
import junit.framework.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
public class MainTest {
private static Main main;
@BeforeClass
public static void setUp() {
main = Mockito.mock(Main.class);
Mockito.when(main.modify(10)).thenReturn(5);
}
@Test
public void testCheck1() {
Test1 main1 = new Main();
int num = main.check1();
Assert.assertEquals(5, num);
}
}
该测试失败。为什么?
我可以嘲笑一类的一种方法,而不是整个类。就像在这种情况下修改()不是check1()? –
这就是'spy()'(或'@ Spy'注释)进入的地方,而不是'mock()'。间谍将使用对象的实际实例,并且只在测试明确表达的地方覆盖行为。 –