(承上篇)
這個底層函數返回的是一個對象指針,如何模擬呢?雙擊函數名,打開底層模擬器。
首先,在前置代碼中定義對象並初始化。然後,在模擬值中填寫這個對象的地址。
這是模擬的結果。
複雜對象的數據一樣可以移到表格中,這時,要移到表格中的不是對象本身,而是對象中包含的數據。例如,要把data.ui移到表格中,雙擊它的值“1234”就行了。
我們還可以用局部數據模擬的功能,處理各種各樣的複雜情形。
例如,以下函數處理的是由界面輸入的數據,這也是單元測試的一個難點。可以使用局變數據模擬,把界面輸入轉換成普通的內部輸入。
這個函數的邏輯功能是計算SQL字符串,但計算結果沒有輸出到外部,這是內部輸出,工具也可以判斷內部輸出是否正確。
下圖是測試結果:
內部輸入解決之後,無論別人(關聯代碼),是否存在,是否正確,是否被隔離,都可以完整檢測我(當前代碼)。檢測我是否對所有數據,包括內部輸入,都做了正確的分類和處理。
從而實現單元測試的目標:無論別人怎麼樣,我總是對的! 如果所有代碼單元都做到了這一點,那會怎麼樣呢?整個項目就沒有代碼錯誤。
來看看嵌入式測試。在設備上進行單元測試不僅難度大、成本高,也無法達到應有的效果。如果在設備上測試,設備的一些輸出是難於控制的,例如這個例子,假設只有在發生雷擊時,獲取前車距離的函數纔會返回失敗,那我們是不是等着雷擊呢?
即使不考慮成本,嵌入式單元測試也應該在PC上進行,這樣才能做到“我總是對的”。
(未完待續)