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

(承上篇)


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

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

    咱們把指針先保存一下,第二次計算前再恢復回來。看看結果怎麼樣。
    
    如今,參數的輸出是正確的了。可是,返回值仍是不對,返回值應該跟參數同樣。分析一下,通過這裏的計算後,指針再次偏移了,返回前沒有恢復,因此,返回的是不正確的指針。
    
工具

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

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

相關文章
相關標籤/搜索