【发布时间】:2013-09-18 22:58:55
【问题描述】:
我只是想到了一些我想做的小事,并且很好奇它是否有能力做到这一点。这纯粹是一种方便的语法糖之类的东西,几乎不是强制性的,但我认为可能在某个时候实现了一点便利。
我有一个方法位于 Junit 测试用例的辅助方法中的 2-3 层,该方法会引发检查异常。我知道如果这个异常被抛出,我想失败。但是,如果我只是调用 Fail(),我会丢失异常的堆栈跟踪以及允许异常传播所带来的其他便利
我知道“标准”方法是让方法抛出异常。但是,正如我所说,我已经深埋了一些方法,我怀疑这个方法将被许多未来的辅助方法调用。如果我在这个方法中抛出一个异常,我将不得不不断地向所有使用这个方法的方法添加一个 throw 子句,直接或间接地,这可能是相当多的方法。这显然是可行的,只是有点烦人;而且,至少在理论上,我可以掩盖抛出异常的情况,如果我的所有方法都已经抛出异常,我实际上想捕获它。
有没有一种方法可以告诉 JUnit 表现得好像异常 已经 传播到顶层并失败了,而不必让我的所有方法都抛出它?因此,JUnit 立即报告由于异常而导致的失败,以及堆栈跟踪和所有内容。本质上我想要一个接受异常的失败方法。
这样的东西是否存在,或者我必须简单地扔掉它?
ps。我知道我可以将它包装在 RuntimeException 中并重新抛出它,但我也不是很喜欢这个选项。
【问题讨论】: