我需要验证super.method(1)
方法调用。下面是我的代码:
public class X extends Y {
@Override
void method(String s) {
super.method(1);
}
@Override
void method(int i) {
super.method("str");
}
}
public class Y {
void method(String s) {
// do some action
}
void method(int i) {
// do some action
}
}
和不正确的工作试验
public class XTest {
@Test
public void should_also_invoke_parent_method_with_proper_param() {
// Given
X spy = Mockito.spy(new X());
// When
spy.method("str");
// Than
Mockito.verify((Y) spy).method(1);
}
}
如何验证super.method(1)
调用?
您可以重构代码以从其他方法调用超方法
public class X extends Y {
@Override
void method(String s) {
callsuperMethod();
}
void callsuperMethod(){
super.method(1);
}
@Override
void method(int i) {
super.method("str");
}
}
现在可以验证
Mockito.verify(spy).callsuperMethod();
看起来可以使用JMockito。这篇文章可能对你有用。
Powermock -模拟超方法调用