Mockito:thenThrow(Exception.class)和thenThrow(new Exception())之间的区别

时间:2016-08-09 13:38:48

标签: java mockito

我第一次使用Mockito,我想知道使用when(dao.create(order)).thenThrow(new SQLException());when(dao.create(order)).thenThrow(SQLException.class);之间有什么区别。 两者似乎运行得很好,我无法在Mockito API中找到任何相关信息。

我能想到的唯一区别是,当使用new SQLException()时,您可以在构造函数中输入参数。这是吗?

2 个答案:

答案 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