有没有办法向 JUnit 输出添加消息?刚才我可以将该消息的异常添加到 ErrorCollector,但因此我将拥有消息和堆栈,而我不需要最后一个。我想在错误之前添加消息。
想法是:在检查 XML 时,收集所有差异,最后,如果有一些错误,则输出 XML 本身和之后的错误。
编辑: 请注意,我想添加到现有的输出中,而不是只输出我的消息。
有没有办法向 JUnit 输出添加消息?刚才我可以将该消息的异常添加到 ErrorCollector,但因此我将拥有消息和堆栈,而我不需要最后一个。我想在错误之前添加消息。
想法是:在检查 XML 时,收集所有差异,最后,如果有一些错误,则输出 XML 本身和之后的错误。
编辑: 请注意,我想添加到现有的输出中,而不是只输出我的消息。
听起来您正在寻找ErrorCollector
略有不同的行为。最好的解决方案是只推出您自己的版本。
这是来源ErrorCollector
:https ://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);
}
}
编写自己的错误收集器。应该很容易包装现有的断言方法,捕获异常并跟踪是否有任何失败。如果您将此作为规则编写,则可以在每次测试后进行评估,而您必须手动进行。