【发布时间】:2010-05-06 17:13:43
【问题描述】:
我正在使用 JUnit 为没有单元测试的遗留代码编写一些更高级别的测试。
大部分代码“吞下”了各种未经检查的异常,如 NullPointerExceptions(例如,仅打印堆栈跟踪并返回 null)。因此,即使在底层代码的各个点发生级联灾难,单元测试也可以通过。
有什么方法可以让第一个未经检查的异常测试失败,即使它们被吞没了?
我能想到的唯一替代方法是编写一个自定义 JUnit 包装器,该包装器重定向 System.err,然后分析输出中的异常。
【问题讨论】:
-
不,如果异常在到达 JUnit 代码之前被吞掉,JUnit 怎么知道?但也许您不应该依赖遗留代码中发生的任何事情,而只需检查您的代码是否正确。毕竟,当出现影响代码结果的问题时,您的测试应该会失败。
-
@FRotthowe:我正在使用 JUnit 为遗留代码的现有组件编写回归测试和包装器测试。我没有太多自己的代码。问题是我想捕捉这些内部故障,尤其是当人们维护内部代码时。
标签: java unit-testing junit swallowed-exceptions