【发布时间】:2014-05-29 11:47:16
【问题描述】:
我有一个调用两个方法的构造函数。它们都是无效的,我只是想验证它们是否被调用。
Foo.java
public class Foo {
public Foo(String name, Object obj) {
init(name);
doSomething(obj);
}
}
FooTest.java
@Test
public void constructor_test throws Exception {
Foo foo = Mockito.mock(Foo.class);
PowerMockito.whenNew(Foo.class).withAnyArguments().thenReturn(foo);
Foo f = new Foo("name");
verify(f).init(Mockito.anyString());
verify(f).doSomething(Mockito.any(Object.class));
}
单元测试失败并显示一条消息,指出与模拟 foo.init(); 的交互为零。
如何验证构造函数中的方法调用?
【问题讨论】:
-
在这种情况下你真的需要使用模拟吗?如果这些方法更改
Foo的状态,最好检查该状态。如果它们调用了一些外部组件,您可以改为模拟这些组件。
标签: java unit-testing junit mockito powermock