【发布时间】:2012-03-09 17:11:35
【问题描述】:
模拟版本:1.9.0
我想在 mockito 中设置对模拟对象的方法的调用,而不调用原始方法本身:
编辑:此示例实际上按预期工作,即未执行主体方法“test()”。但是,经过进一步调查,我注意到原始方法具有默认的可见性修饰符,我怀疑这会导致问题,因为在将其更改为 public 之后(这不应该相同吗?!)它按预期工作。
例如
public class TestClass {
public String test() {
System.out.println("test called!");
return "test";
}
}
//in test
TestClass mock = mock(TestClass.class);
when(mock.test()).thenReturn("mock!"); //<-- prints test called here? why? how can I switch it off?
【问题讨论】:
-
when(mock.test)不会编译,这让我怀疑其余的。请仔细检查这是否真的是您的代码所说的。 -
此外,Mockito 不会模拟最终类或方法,因为它是由 JVM 本身强制执行的。
-
这只是一个例子,真正的代码会使事情变得不必要的复杂
-
您使用的是什么版本的 mockito?我熟悉您所描述的问题,并且我知道它曾经是默认行为。也许它在最近的版本中发生了变化。
-
我使用的是 1.9.0 版本