如何验证父类方法对super.method()的调用



我需要验证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 -模拟超方法调用

相关内容

  • 没有找到相关文章

最新更新