單元測試實踐的主要問題與解決(7)

(承上篇)


    這個底層函數返回的是一個對象指針,如何模擬呢?雙擊函數名,打開底層模擬器。

   

    首先,在前置代碼中定義對象並初始化。然後,在模擬值中填寫這個對象的地址。

   

    這是模擬的結果。

   

    複雜對象的數據一樣可以移到表格中,這時,要移到表格中的不是對象本身,而是對象中包含的數據。例如,要把data.ui移到表格中,雙擊它的值“1234”就行了。

   

    我們還可以用局部數據模擬的功能,處理各種各樣的複雜情形。

   

    例如,以下函數處理的是由界面輸入的數據,這也是單元測試的一個難點。可以使用局變數據模擬,把界面輸入轉換成普通的內部輸入。

    這個函數的邏輯功能是計算SQL字符串,但計算結果沒有輸出到外部,這是內部輸出,工具也可以判斷內部輸出是否正確。

   

    下圖是測試結果:

   

     內部輸入解決之後,無論別人(關聯代碼),是否存在,是否正確,是否被隔離,都可以完整檢測我(當前代碼)。檢測我是否對所有數據,包括內部輸入,都做了正確的分類和處理。

   

    從而實現單元測試的目標:無論別人怎麼樣,我總是對的! 如果所有代碼單元都做到了這一點,那會怎麼樣呢?整個項目就沒有代碼錯誤。

    來看看嵌入式測試。在設備上進行單元測試不僅難度大、成本高,也無法達到應有的效果。如果在設備上測試,設備的一些輸出是難於控制的,例如這個例子,假設只有在發生雷擊時,獲取前車距離的函數纔會返回失敗,那我們是不是等着雷擊呢?

    即使不考慮成本,嵌入式單元測試也應該在PC上進行,這樣才能做到“我總是對的”。

   


(未完待續)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章