Java Mockito:thenthow(Exception.class)和thenthow(newexception())之间的区别
我第一次使用Mockito,我想知道在(dao.create(order)).ThentThrow(newSQLException())时使用Java Mockito:thenthow(Exception.class)和thenthow(newexception())之间的区别,java,mockito,Java,Mockito,我第一次使用Mockito,我想知道在(dao.create(order)).ThentThrow(newSQLException())时使用有什么区别和时(dao.create(order)).thenthow(SQLException.class)。 两个看起来都运行得很好,我在网上找不到任何关于它的东西 我能想到的唯一区别是,当使用newsqlexception()时,可以在构造函数中输入参数。是这个吗 when(dao.create(order)).thenThrow(new SQLEx
有什么区别代码>和时(dao.create(order)).thenthow(SQLException.class)代码>。
两个看起来都运行得很好,我在网上找不到任何关于它的东西
我能想到的唯一区别是,当使用newsqlexception()
时,可以在构造函数中输入参数。是这个吗
when(dao.create(order)).thenThrow(new SQLException());
这将抛出您提供的异常对象。例如,您可以使用特定参数创建异常,例如newsqlexception(“异常描述”,“sql:code”)
这将使用反射创建指定类的默认实例 可以用一个可丢弃的作为它的论据。您不应该监视throwable,因为这意味着逻辑还可以捕获通常不可恢复的错误
传递新的SQLException()相当于SQLException.class那么,为什么存在SQLException.class?它与没有参数的新SQLException()相同。还是有具体的原因?这是打电话的捷径。因此throw(SQLException.class)和thnthow(newsqlexception())具有相同的含义。第一种情况总是需要指定表达式类的默认构造函数(不带参数的构造函数)。@MartinStrejc OK,所以它只是一个快捷方式。明白了,谢谢你给GitHub的链接。如果我理解你的答案,我就不应该这样做thenthow(Throwable.class)
,因为它也会捕获错误(Throwable的子类)。好的,注意!但我不知道什么时候我会真正考虑做这样的事情,我只测试例外情况。
when(dao.create(order)).thenThrow(SQLException.class);