当前位置: 首页 > 知识库问答 >
问题:

Mockito:如何验证捕获另一个异常时引发的特定异常

东方富
2023-03-14

例子:

public T f1() {
  try{
    Object o = new Object();
    
    o.someFunc() // i want to mock this function call to throw an exception (ex) Exception1)

  }
  catch (Exception1 e) {
      throw new Exception2() 
 }

我如何在mockito中执行此操作,并在强制抛出异常1后验证是否得到了异常2?

共有1个答案

山疏珂
2023-03-14

您可以使用when和throw模拟来自someFunc的例1

when(someService.someFunction("param1", "param12")).thenThrow( new Exception1());

然后,f1()应该捕捉异常并抛出异常2

您可以如下断言异常类名,

assertEquals(mvcResult.getResolvedException().getClass().getName(), "org.springframework.web.bind.MissingServletRequestParameterException");
 类似资料:
  • 问题内容: 在我的使用Mockito的单元测试中,我想验证未抛出该异常。 我的测试设置了,设置了对象和属性,以便该方法将抛出。 我 确认 从未调用过Calling.method()。 我想要测试失败,因为它抛出,然后我想编写一些代码来解决此问题。 我注意到的是,测试始终会通过,因为永远不会抛出异常。 问题答案: tl; dr JDK8之后:使用 AssertJ 或自定义lambda来声明 异常 行

  • 问题内容: 我想捕获一个异常,该异常嵌套在另一个异常中。我目前正在这种方式: 有没有一种方法可以使此操作更高效,更优雅? 问题答案: 没有更优雅的方法来选择性地“捕获”嵌套异常。我想如果您做了很多这样的嵌套异常,就可以将代码重构为通用的实用程序方法。但是它仍然不会优雅或高效。 优雅的解决方案是消除异常嵌套。要么不首先将异常链接起来,要么(有选择地)解开包装并将嵌套的异常重新扔到堆栈的上方。 嵌套异

  • 问题内容: 我想捕获一个特定的ValueError,而不仅仅是任何ValueError。 我试过这样的事情: 但这会引发SyntaxError:无法分配给文字。 然后我尝试了: 但这引发了例外,即使这是我要避免的例外。 问题答案: 在,是例外,而不是字符串的实例。因此,当您测试不等于特定字符串时,该测试始终为False。尝试: 代替。 例: 通常,如果可以帮助您,您并不是真的希望依赖于错误消息-这

  • 问题内容: 说我有以下 遇到SpecificException会发生什么?它是否首先将其捕获为通用异常,然后捕获特定异常? 还是只在忽略通用异常的同时捕获SpecificException。 我不希望泛型和特殊异常都被捕获。 问题答案: 否。所有异常都将被第一个块捕获。第二个将永远不会到达(编译器会识别出来,由于代码无法到达而导致错误)。如果要特别对待,则必须采用另一种方法: 然后,第一个块将捕获

  • 我使用以下代码发送XML请求: 但有时我会犯这个错误: 当我得到错误401时,我如何捕捉和处理异常?如果可能的话,我希望处理行之后的异常。

  • 我使用的是一个创建自己线程的库,它引发了一个异常。如何捕捉异常?异常在下面标记的行上引发: