有沒有辦法給JUnit輸出添加消息?剛纔我可以給ErrorCollector添加一個帶有這個消息的異常,但是我將會得到和堆棧,我不需要最後一個。我想在錯誤之前添加消息。如何將簡單消息插入到JUnit輸出中?
這個想法是:在檢查XML時,收集所有的差異,並在最後如果出現錯誤,輸出XML本身以及錯誤之後的錯誤。
編輯: 請注意,我想添加到現有的輸出,而不是隻輸出我的消息。
有沒有辦法給JUnit輸出添加消息?剛纔我可以給ErrorCollector添加一個帶有這個消息的異常,但是我將會得到和堆棧,我不需要最後一個。我想在錯誤之前添加消息。如何將簡單消息插入到JUnit輸出中?
這個想法是:在檢查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);
}
}
所以,你打算打破現有的錯誤信息收集機制,並用String收集取代它。不用了,謝謝。我想收集字符串和異常消息。你「離我而去」只是我的問題。感謝您的參考......但是我已經從早上大約5次重讀了這個頁面。答案不在那裏。 – Gangnus 2013-04-11 11:08:23
上述聽起來完全像你的問題的答案。似乎你需要澄清你的問題,因爲我們都認爲這會解決你所要求的。 – 2013-04-11 12:58:53
問題聽起來如何:如何在輸出中插入消息,而不是如何僅輸出消息而不是通常的內容。您建議我一個好主意,我自己擴展了驗證器 - 用於檢查收集器中是否有錯誤。但問題仍然沒有得到解答,對不起。 – Gangnus 2013-04-12 08:13:29
正常情況下,我只是使用我選擇的日誌框架添加日誌語句。這對你來說足夠嗎? – 2013-04-11 09:59:51
@DuncanJones如果您有一個項目,它可以正常工作。但是,如果您使用數十個和數百個項目,並且所有這些項目都可以向JUnit寫入某些內容,但結果卻不可讀。所以解決方案很糟糕,因爲它不是**可擴展**。 (我之前使用過,而且非常不方便) – Gangnus 2013-04-11 10:54:52