我知道如何解決EXC_BAD_ACCESS問題,但我不確定如何進行單元測試。有沒有辦法在代碼中捕獲EXC_BAD_ACCESS而不是簡單地崩潰?如何爲EXC_BAD_ACCESS進行單元測試?
這就是爲什麼我問:我寫了大量使用塊庫,就像這樣:
- (void)doSomething:(void (^)())myBlock;
我在執行的doSomething:
我將最終運行塊,像這樣:
myBlock();
如果調用者傳遞零的塊,則它會與EXC_BAD_ACCESS
崩潰,因此該解決方案是檢查在塊中存在,像這樣:
if (myBlock) {
myBlock();
}
這個零檢查很容易忘記,所以我想寫一個單元測試失敗時發生崩潰的方法。我認爲崩潰可能被認爲是測試失敗,但我認爲對於其他人試圖運行測試來看到一個很好的失敗消息而不是崩潰的消息會更好。有任何想法嗎?
這非常有趣。在第一次嘗試時,無論我做什麼,結果都會失敗,但該項目的目標是作爲Cocoa Touch靜態庫,並運行測試來啓動iPhone Simulator。我不認爲fork()會在那裏工作,所以我會試着將它當做Mac/Cocoa目標來看看會發生什麼。謝謝! – greenisus
噢,是的,我不知道'fork()'是否可以在iOS上使用,對不起。我很難讓這個工作完全正確,如果我想出任何東西,我會更新。 –