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

(承上篇)


    新加的這幾行代碼完成字符串的移動。這樣,代碼基本上寫完了,結果對不對呢?CTRL+F7編譯一下。
    
    結果是完全不對的。我們來分析一下,輸入是這個,全部代碼都是黑色,表示都執行到了,跟我設想的一樣。問題在哪裏呢?

    看一下計算左邊空格的代碼,經過計算後,指針偏移了,所以後面的計算,使用的是不正確的指針。
    

    我們把指針先保存一下,第二次計算前再恢復回來。看看結果怎麼樣。
    
    現在,參數的輸出是正確的了。但是,返回值還是不對,返回值應該跟參數一樣。分析一下,經過這裏的計算後,指針再次偏移了,返回前沒有恢復,所以,返回的是不正確的指針。
    

    返回前,再次把指針恢復。看看結果。
    
    現在,結果是正確的了。看一下測試結果,還有一個異常。
    
    點擊它,可以看到,是空指針產生了這個異常,我們的代碼沒有對空指針進行處理。在這裏,可以很清晰的看到代碼的執行狀況。前面三行是黑色的,第四行開始都是紅色的,表示代碼只執行到第三行,也就是說,第三行產生了異常。
    
    添加處理空指針的代碼。
    
    現在,代碼寫完了,單元測試也同步完成了。
    
    我們來回顧一下ETDD過程:跟傳統開發模式相比,ETDD多付出的,是把以前僅在頭腦裏想的代碼功能記錄下來,從而精確地、完整地進行代碼的功能設計。
    
    ETDD所得到的,是在編寫代碼的過程中,隨時可以看到代碼的行爲,這可以讓我們的編碼過程變得輕鬆,而且也基本上不用調試,大家知道,調試,是最花費時間的。
    
    

    另一方面,只要這裏設定的數據是完整的,那麼,我們的代碼就沒有問題。將來,如果需要修改代碼,只要重新執行一下測試,就可以知道是不是破壞了原有的功能。
    
    小結:ETDD通過可視化來幫助程序員輕鬆地編寫程序,單元測試不再是一個負擔;ETDD通過自動化,使程序員只需要在考慮代碼功能時順手記錄一下,其他工作都由工具完成。ETDD提升了編碼的效率,也省略大部分調試,從而大幅提升了生產力。
  
(未完待續)




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