java - 模拟抛出异常的方法

标签 java junit mockito

我有一个方法

服务类

Public void foo() throws SchedulerException{

           ..........

}

测试类

Public void testExample(){
     Mockito.doThrow(SchedulerException.class).when(f.foo());
 }

编译器要求我为 testExample() 放置一个 try/catch 或 throws 有没有其他方法可以达到同样的目的?

最佳答案

你的问题没有具体说明 SchedulerException extends RuntimeException,但根据你的问题我认为它没有。

如果 SchedulerException 没有 extends RuntimeException,您的测试方法 (testExample()) 必须throws SchedulerException。这是由于 Java 的本质是强制执行捕获或抛出原则。详情可见JLS §11 .

正如@Ishnark 所建议的,如果您希望您的测试抛出任何类型的Exceptionyou should annotate the test with @Test(expected=ExcpectedExceptin.class) (即使您的异常 extends RuntimeExcpetion)。

关于java - 模拟抛出异常的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43723281/

相关文章:

java - Mockito 规则未应用

java - 在 Java 中序列化 JRuby CompiledScript

java - 将 PdfFormField 添加到大 PDF 时出现异常

java - JUnit ClassRule 在 Spring Boot 应用程序关闭之前执行代码

intellij-idea - 使用 IntelliJ Idea 的 Selenium WebDriver 运行 JUnit 时,如何使浏览器窗口在后台运行?

java - 如何从 JUnit 测试中的模拟对象获取 typeName()?

java - 什么是默认 javac 源模式(断言为标识符编译)?

java - 为什么有时不需要使用方法的返回值?

java - org.hibernate.engine.spi.SessionFactoryImplementor.getProperties()Ljava/util/Properties

java - 单元测试中的模拟域实体