假如要編寫乙個cmath類,其中有乙個方法abs(),原形如下:
class cmath
;一般的程式設計習慣是直接寫**,然後除錯,至於測試,則以後再說。tdd要求,在未編寫測試**前不能寫任何產品**。
這裡使用的測試框架是cppunit,用例**使用本系列的一和二介紹的格式,為了減少篇幅,只列出關鍵**,cppunit的使用及輔助**的編寫方法請參閱本系列的一和二。
首先編寫剛好會導致錯誤(包括編譯錯誤)的測試**,定義乙個測試類:
class testmath : public cppunit::testcase
;由於類cmath不存在,產生編譯錯誤。編寫cmath類定義,使編譯通過:
class cmath
;編寫函式abs()的測試函式,只建立乙個用例:
void testmath::testabs()
由於cmath::abs()不存在,產生編譯錯誤。編寫cmath::abs(),這時可以先寫乙個空函式,有返回值的隨便寫乙個返回值,使編譯通過就行了:
int cmath::abs(int arg)
執行測試,當然測試是失敗的。編寫函式**,使測試通過:
int cmath::abs(int arg)
測試通過,為測試函式增加乙個用例:
void testmath::testabs()
測試失敗,繼續編寫cmath::abs()的**:
int cmath::abs(int arg)
測試通過。再增加乙個用例,引數為0,測試也可以通過,不必修改產品**。當所有的功能點都已經編寫了測試**,並測試成功後,表示**的功能已經完整實現,這時應該閱讀和完善**,例如,改進**結構、修改不合適的變數名、增加必要的注釋、改進效能低下的計算過程、刪除多餘的**行,完成重構後,再次執行測試。
MinGW 安裝與簡單例項
基本上都是按提示的點選下一步操作 接下來修改一下安裝的目錄,最好像下面一樣,d盤根目錄下建mingw資料夾 到了最後一步的操作,點 basic 在右側的所有專案都右鍵點選 mark for installation 勾選上 上一步完成後,會提示關閉的,點一下 close 這一步很重要,因為需要告訴執...
Docker系列 exec與attach(四)
不論是開發者是運維人員,都經常有需要進入容器的訴求。目前看,主要的方法不外乎以下幾種 1.使用ssh登陸進容器 2.使用nsenter nsinit等第三方工具 3.使用docker本身提供的工具 方法1需要在容器中啟動sshd,存在開銷和攻擊面增大的問題。同時也違反了docker所倡導 的乙個容器...
RESTful的簡單介紹與例項
restful的概念 一種軟體架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。該理念是由roy thomas fielding在他2000年的博士 中提出的。例項 首先需要匯入所需...