Ну, вы можете, если хотите. Я не знаю, знакомы ли вы с JMockit , проверьте это. Текущая версия 0.999.17. А пока давайте посмотрим на это ...
Предположим следующую иерархию классов:
public class Bar {
public void bar() {
System.out.println("Bar#bar()");
}
}
public class Foo extends Bar {
public void bar() {
super.bar();
System.out.println("Foo#bar()");
}
}
Затем, используя JMockit в вашем FooTest.java
, вы можете проверить, что вы действительно звоните на Bar
с Foo
.
@MockClass(realClass = Bar.class)
public static class MockBar {
private boolean barCalled = false;
@Mock
public void bar() {
this.barCalled = true;
System.out.println("mocked bar");
}
}
@Test
public void barShouldCallSuperBar() {
MockBar mockBar = new MockBar();
Mockit.setUpMock(Bar.class, mockBar);
Foo foo = new Foo();
foo.bar();
Assert.assertTrue(mockBar.barCalled);
Mockit.tearDownMocks();
}