【问题标题】:Java unit test check if method is invoked without executing itJava单元测试检查方法是否被调用而不执行
【发布时间】:2015-10-28 10:21:20
【问题描述】:

我必须测试一个调用两个 void 方法的方法。我只是想检查两个void方法是否被调用,但是方法必须被存根。

我该怎么做?我尝试使用 Mockito doThrow 方法实现它,但没有成功。

doThrow(new RuntimeException()).when(mockedClass).methodName();

需要但未调用:错误

我该如何解决我的问题?

【问题讨论】:

    标签: java unit-testing mockito void


    【解决方案1】:

    您只能验证模拟内容中的调用,例如

        Foo bar = Mockito.mock(Foo.class);
        ClassToTest testInstance = new ClassToTest(bar);
    
        testInstance.doStuff();
        Mockito.verify(bar, times(1)).someMethod(); // will pass if someMethod of Foo class was called in scope of testInstance.doStuff()
    

    我不确定您是否应该通过期待异常来检查实际的方法调用。你能提供一些关于上下文的代码/更多细节吗?

    【讨论】:

      【解决方案2】:

      您实际上需要在 Mockito 上使用 verifyMethod。这是遇到同样问题的人。所示示例模拟对象,注入它,然后检查它是否被调用。

      Mockito : how to verify method was called on an object created within a method?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-31
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多