基於真實專案的TDD應用

2021-09-05 14:15:56 字數 2240 閱讀 6972

很久就成立了敏捷軟體開發團隊組織.

但是最近幾個月一直很忙,

沒有時間去更新我的blog

了, 瀏覽了一下團隊的一些文章,很多是關於理論的.我個人是個實用主義者,任何東西對於我來說都是要用的.當然理論也是必不可少的.

敏捷開發包括很多內容,所以我就不多說了.在這裡,我想分享一下我在開發中是如何做的.但是由於我是以乙個真實的專案做為基礎講解,所以我認為又很多內容要寫的,可能一下子寫不完,這樣只能分幾次寫了.基於這是做為乙個真實的專案,所以很多**不會貼出來,只在寫文章時貼出一些測試用例的**,這些**也是經過改編過的,請大家諒解.希望得到大家的支援和鼓勵.使我有更大的動力去寫完它.

在這些文章裡,力求做到以下:

1)盡量解釋tdd如何在真實的專案中去應用

2)盡量解釋tdd的好處

3)盡量做到tdd的實用性

4)介紹一些關於tdd的文章,書籍等. 

就個人而言,我非常喜歡tdd,因為在我的開發中tdd起到了很大的作用.因為現在我使用.net寫程式,所以進行tdd的測試工具是nunit,關於nunit我在幾個月前寫了一篇隨筆nunit詳細使用方法,

有興趣的讀者可以去看看,希望您費點cpu和記憶體,給我指出不足和錯誤指出.在此謝過了.

拿我現在開發的乙個project為例吧.

專案名稱:計價系統

專案描述:當坐taxi時,假設起點是pickup,終點是dest.在期間可能存在幾個stop.計算總的**

1)那麼pickup

到dest

的**(

成為base rate)

如何計算?

一般來說,

這兩點之間的**在資料庫中都有值,

如果找得到話,

就是這個值,

如果找不到,

就按里程計算.

2)如果中間有幾個stop,

那麼又該如何計算.

這裡,涉及到是不是在乙個區,

是不是相鄰的區的等等.

是呀,演算法非常複雜,如果沒有stop,這個非常簡單,如果有1個站,怎麼算呢.假設乘車的順序為s1--s2--s3.這樣需要判斷s1和s2是不是相鄰(相鄰稱為touching)的,如果是,該怎麼計算,如果不是,又該怎麼計算,如果是在同乙個區,又如何計算呢,如果有乙個stop還好說,如果有2個,3個甚至更多,又該如何計算呢.

是的,我自己認為,寫**實現這個邏輯不是太難,難就難在你的**得出的結果是不是正確的.

好了廢話不說了.開始吧.

對於我現在來說

, 開始先寫測試

, 後寫**

.1system;

2using

nunit.framework;

3using

price.business;

4using

price.dataaccess;

//假設price為我實現的計算**的域

5namespace

stoppricingfixture617

18"without stop")]

19public

void

withoutstop()

2029

上面的**很簡單,先構造乙個計算**的類pricing,然後設定起點和終點,最後計算**,然後驗證.編譯,很明顯通不過,這是因為pricing類沒有定義.由於一些原因,這裡我就不寫出pricing類的**了,但是強調的是pricing類就是計算**的類.

什麼時候這個測試案例才算通過呢?只有在nunit的進度條為綠色時才算通過.

如果你還想對其他的位址進行測試,可以仿照這個方法進行.

在此總結一下:

為了進行在.net進行tdd開發,你需要注意:

1)了解關於nunit的用法

2)先寫測試,後寫**.當然對於不同的人可能不一樣,他們可能先寫**,後寫測試

3)這裡注意了,因為我上面的price類需要訪問資料庫,而且資料庫的連線字串放在config檔案裡面,所以你必須把這個檔案拷貝到測試類的bin目錄下,並且注意config檔案的檔名,必須以測試類的dll檔名一樣.比如,測試類的dll是pricetestfixture.dll,那麼config檔案的名稱為pricetestfixture.dll.config.

今天寫到這裡吧.本人從小語文就不好,如果有什麼建議和批評,儘管提.

附:推薦的書籍

<>

james w. newkirk and alexei a. vorontsov 

microsoft press

基於thinkPHP專案的上線過程

第一步 在自己的伺服器上面新建乙個虛擬主機,並且去雲伺服器上面將其解析一下。第二步 將資料庫檔案上傳到線上的資料庫中去。第三步 去重寫nginx規則。將以下 寫到usr local nginx conf vhost 網域名稱.conf檔案中。在thinkphp開發手冊的459頁。location 然...

基於vue專案的知識總結

用vue有一段時間了,從用vue cli搭建專案 一步步配置axios vuex vue router,到之後的研究canvas 動效這些,一直想寫些東西記錄一下 做個總結,剛好趁著有空就整理一下。這裡先占個坑,列一下大綱,具體某一方面的總結會單獨寫文章,放鏈結在本文中,之後會不定期更新來填坑。手機...

真實分享我發現暴利賺錢專案的方法

在現在的行業裡,也基本不存在沒人做過的專案,我找專案從來不是去找那些別人沒做過的,而是一直去找那些別人正在做但蛋糕還夠大的專案。我被問的最多的乙個問題,就是你有什麼賺錢的專案嗎,這句話我聽的耳朵都起繭子了,所以今天我就來分享下我找專案的方法。我在分享方法之前,先明確乙個觀點,就是能讓你賺錢的專案,往...