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

时间:2014-07-15 17:59:12

标签: java unit-testing testng mockito

我需要验证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)调用?

2 个答案:

答案 0 :(得分:0)

看起来你可以使用Mockito。这篇文章对你有用。

Powermock - mocking a super method invocation

答案 1 :(得分:0)

你可以重新考虑代码以从其他方法调用super方法

    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();