java - 如何模拟 Throwable 对象?

标签 java spring junit mockito

我想编写 Junit 测试来为我的应用程序处理错误方法,它看起来像这样

public void myHandlingError(Throwable t) {//content}

我想模拟 Throwable 对象,但找不到任何示例。 这就是我的想法......

   public void myHandlingErrorTest(){
       Throwable t = new Exception();
       myClass.myHandlingError(t);
       .
       .
       .

如有任何建议,我们将不胜感激!

最佳答案

术语模拟在某种程度上意味着您使用模拟框架(例如 EasyMock)来创建您正在寻找的对象。但对于表示异常的对象来说,这是很少必要的。您会看到,异常通常是在“错误输入”时创建的。

我的测试通常会做什么:将一些“坏”输入驱动到类中;然后期望抛出某个异常。我的测试捕获该异常,并检索该异常的一个或多个属性;例如它的消息(使用断言验证)。

另一方面:异常是您在生产代码中使用 new 创建的(大多数时候)。因此,无论如何都没有简单的方法来 mock 它。创建异常工厂并使用依赖注入(inject)......听起来有点矫枉过正。你看,异常的好处是:在大多数情况下,代码是关于:“抛出错误的输入”。因此,您只需提供错误的输入,并在测试中抛出异常以进行进一步验证。

就您而言,您正在测试实际接收可抛出/异常对象作为参数的代码;在这里,可以采用您开始使用的方法 - 在测试中创建对象并将其传递给您的“处理程序”。

关于java - 如何模拟 Throwable 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39340138/

相关文章:

java - 在测试数据库操作时将数据库重置为已知状态的最佳方法是什么?

java - Spring在运行时选择bean实现

java在Tomcat中执行脚本

java - 如何使用 Spring boot 将缓冲读取器注入(inject)到以文件读取器作为参数的类中?

java - Spring 3.0 依赖注入(inject)的最小 JAR

java - JUnit - Java 项目结构

java - Spring xml + JUnit - xml 上下文文件在 src/test/resources 中不起作用但在 src/main/resources 中起作用

java - 队列实现,入队方法不起作用

java - 为什么在 JAVA 中不推荐使用默认包?

java - 使用 java 将 jTable 内容打印到一张纸条