Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mockito:thenthow(Exception.class)和thenthow(newexception())之间的区别_Java_Mockito - Fatal编程技术网

Java Mockito:thenthow(Exception.class)和thenthow(newexception())之间的区别

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

我第一次使用Mockito,我想知道在(dao.create(order)).ThentThrow(newSQLException())时使用
有什么区别
时(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);