好吧,我再次被Mockito困住了。这里的情况:验证是否从被测方法调用了继承的超类方法
我有一个超类和子类:
class Parent {
protected void insertData() {
// Here is some database related stuff
someObject.storeData();
}
}
class Child extends Parent {
private String name;
public void printHierarchy(int x) {
if (x > 1) {
insertData()
} else {
System.out.println("Child");
}
}
}
而且在我的单元测试类,我测试Child
类printHierarchy()
方法:
@RunWith(SpringJUnit4ClassRunner.class)
public class ChildTest {
@InjectMocks // To inject mock objects
private Child child = new Child();
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
// This is where the issue is
doNothing().when(child).insertData();
}
@Test
public void testPrintHierarchy() {
child.printHierarchy(5);
// Here also
verify(child, times(1)).insertData();
}
}
所以问题是,我如何验证方法是否从Child#printHierachy()
被调用?
当我尝试上面的代码,我得到的错误是:
Argument passed to when() is not a mock!
当然,child
不是模仿。我正在测试那个班。但我该如何解决这个问题?
不,我没有找到任何重复的。一个问题虽然非常相似,但它并没有帮助我。
几乎(但不完全)重复的http://stackoverflow.com/questions/10092926/verifying-sequence-of-private-method-calls-in-unit-testing – Raedwald