我第一次使用Mockito,我想知道使用when(dao.create(order)).thenThrow(new SQLException());
和when(dao.create(order)).thenThrow(SQLException.class);
之间有什么区别。
两者似乎运行得很好,我无法在Mockito API中找到任何相关信息。
我能想到的唯一区别是,当使用new SQLException()
时,您可以在构造函数中输入参数。这是吗?
答案 0 :(得分:2)
when(dao.create(order)).thenThrow(new SQLException());
这将抛出您提供的异常对象。例如,您可以使用特定参数(例如new SQLException("description of exception", "sql:code")
when(dao.create(order)).thenThrow(SQLException.class);
这将使用反射创建指定类的默认实例。
答案 1 :(得分:0)
thenThrow可以将throwable作为其参数。你不应该监视throwable,因为这意味着逻辑也可以捕获Error,这通常是不可恢复的。
传递新的SQLException()等同于SQLException.class