JUnit 出力にメッセージを追加する方法はありますか? 今、そのメッセージを含む例外を ErrorCollector に追加できますが、メッセージとスタックがあり、最後は必要ありません。エラーの前にメッセージを追加したいと思います。
XML をチェックしながら、すべての不一致を収集し、最後にエラーがあれば、XML 自体とその後のエラーを出力するという考え方でした。
編集: メッセージだけを出力するのではなく、既存の出力に追加したいことに注意してください。
JUnit 出力にメッセージを追加する方法はありますか? 今、そのメッセージを含む例外を ErrorCollector に追加できますが、メッセージとスタックがあり、最後は必要ありません。エラーの前にメッセージを追加したいと思います。
XML をチェックしながら、すべての不一致を収集し、最後にエラーがあれば、XML 自体とその後のエラーを出力するという考え方でした。
編集: メッセージだけを出力するのではなく、既存の出力に追加したいことに注意してください。
独自のエラー コレクターを記述します。既存の assert メソッドを簡単にラップし、例外をキャッチして、失敗したかどうかを追跡する必要があります。これをルールとして記述した場合、手動で行う必要がある各テストの後に評価できます。
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);
}
}