更完整的問題是,給定一個需要回調作爲參數的依賴關係,如何編寫一個涵蓋回調邏輯的單元測試和仍然可以模擬依賴關係?如何對單元測試回調邏輯?
public class DoStuff {
public void runThis(Runnable callback) {
// call callback
}
}
public class ClassUnderTest {
private DoStuff stuffToDo;
public void methodUnderTest() {
this.stuffToDo.runThis(/*a runnable with some logic*/)
}
}
在上面的例子中,我會嘲笑stuffToDo
因爲我應該驗證呼叫和方法調用的模擬輸出。然而,嘲諷runThis
導致回調邏輯未被測試。此外,回調邏輯看起來應該是私有的,所以我不希望直接測試它;也許這是我的誤解。由於回調的使用相當廣泛,我期望有一個測試它們的常用方法,但我沒有找到它。
回調只需要在這種情況下進行測試嗎?如果是這樣,爲什麼不簡單地爲您計劃傳遞的各種回調編寫測試,這些回調錶達了您對結果的期望?我錯過了什麼嗎? – Jonah
您是否嘗試過使用CountDownLatch,如下例所示:http://stackoverflow.com/a/3802487/2301224 – Baker