【问题标题】:How to test an exception scenario with Hamcrest如何使用 Hamcrest 测试异常场景
【发布时间】:2016-11-06 17:20:52
【问题描述】:

我有一个名为 execute() 的方法,它执行一些操作并返回一个布尔值。正常情况下它返回true,但是如果有异常(比如DataAccessException)它会捕获异常并返回false。

我试图弄清楚如何使用 Hamcrest 测试引发异常并返回“false”的场景。

所以,这里是:

public boolean execute() {
    try {     ....... return true;}
    catch (DataAccessException de) { ....... return false;}
}

【问题讨论】:

    标签: java testing hamcrest


    【解决方案1】:

    当您在execute() 方法中抑制DataAccessException 时,您将无法测试异常,而是可以assert 方法调用的结果,如下所示:

    @Test
    public void testExecute() {
       //Mock the code to throw DataAccessException
        Mokito.doThrow(new DataAccessException()).when(mockObj).methodName(someMethod);
    
        //now call execute method
        boolean actual = obj.execute();
        assertThat(actual, false);
    }
    

    【讨论】:

    • 在 catch 子句中,我在返回 false 之前将异常传递给 Log.debug。
    • 顺便说一句,我可以使用 Mockito 抛出新的 DataAccessException 并断言 false 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    相关资源
    最近更新 更多