用例:我正在嘗試爲我的單元測試框架創建一個診斷測試,該框架運行每個測試用例,然後返回尚未覆蓋的公共方法列表測試用例。我們的想法是通過確保每個公共方法都通過至少1個單元測試來測試,從而獲得更高的測試覆蓋率。在PHP中跟蹤以前的方法調用
問題:我在檢測一個類的方法是否被調用時遇到了問題。我試過使用debug_backtrace()函數,但它只返回來自測試框架的調用,而不是正在測試的類方法。唯一可以運行方法名的方法是將debug_backtrace()函數放入被測試類的方法中,這是一個不可接受的選項,因爲我必須在每個類的每個公共方法中都有。
是否有這樣做的回溯,以獲得測試類方法的替代方式?或者,用稍微不同的方法,是否有辦法開始和停止一個監聽器,它將記錄所有被調用的方法(我可以解析出不屬於的任何內容)?
僞代碼:
runTest($testName){
//run the test
//get all recent classes and methods used
//parse out test framework info
//compare used public methods to public method list for the tested class
}
或者:
runTest($testName){
//start listener
//run the test
//close listener, get all recent classes and methods used
//parse out test framework info
//compare used public methods to public method list for the tested class
}
「我們的想法是通過確保每個的所有公共方法由至少1單元測試測試,以獲得提高測試覆蓋率。」 ---我不認爲這個指標可以代表*任何有用的*。爲什麼不像其他(phpunit)測試框架那樣使用xdebug呢? – zerkms
@zerkms - 你能解釋爲什麼你不認爲這個指標是有用的嗎?重點不是暗示至少有一個單元測試完全覆蓋了一個方法,而是指出哪些公共方法根本沒有任何*覆蓋。至於xdebug,如果我不需要,我寧願不強制用戶安裝額外的擴展。 – VirtuosiMedia
「任何通話」對我來說都沒有用處。方法可以是100行的長度,但覆蓋1%(只要第一行用if($ bla)return;')。 – zerkms