1

有没有办法向 JUnit 输出添加消息?刚才我可以将该消息的异常添加到 ErrorCollector,但因此我将拥有消息和堆栈,而我不需要最后一个。我想在错误之前添加消息。

想法是:在检查 XML 时,收集所有差异,最后,如果有一些错误,则输出 XML 本身和之后的错误。

编辑: 请注意,我想添加到现有的输出中,而不是只输出我的消息。

4

2 回答 2

1

听起来您正在寻找ErrorCollector略有不同的行为。最好的解决方案是只推出您自己的版本。

这是来源ErrorCollectorhttps ://github.com/junit-team/junit/blob/master/src/main/java/org/junit/rules/ErrorCollector.java

如果您只关心字符串并且不需要堆栈跟踪,这是一个快速版本。如果您也想收集堆栈跟踪,但首先显示所有字符串,我将把代码留给您。

public class ErrorMessageCollector extends Verifier {
    private List<String> errors = new ArrayList<>();

    @Override
    protected void verify() throws Throwable {
        StringBuilder sb = new StringBuilder();
        for (String e : errors) {
            sb.append(e).append('\n');
        }
        assertTrue(sb.toString(), errors.isEmpty());
    }

    /**
     * Adds an error message to the table. Execution continues, but the test 
     * will fail at the end.
     */
    public void addErrorMessage(String error) {
        errors.add(error);
    }
}
于 2013-04-11T10:33:54.023 回答
1

编写自己的错误收集器。应该很容易包装现有的断言方法,捕获异常并跟踪是否有任何失败。如果您将此作为规则编写,则可以在每次测试后进行评估,而您必须手动进行。

于 2013-04-11T10:31:27.730 回答