我想编写 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/