2009-12-14 63 views
7

我對單元測試和TDD'相對較新'。直到最近我才完成了我的第一個生產應用程序(至少在理論上)具有100%的代碼覆蓋率。在過去的項目中,我也做了一段時間的單元測試,但是沒有真正的TDD時尚和良好的代碼覆蓋率。它一直是一個後思想。不過,我覺得我現在對它有很好的把握。TDD所需的基礎設施?

我也想培養對TDD和單元測試團隊的其餘部分,以便我們能夠togeather成長,並開始在所有的應用程序在做單元測試前進,並最終發展成做全TDD W /自動化構建&持續集成。我發佈a thread here關於我的攻擊計劃/培訓議程批評&批評。

之一(最高投票的事實)的答覆建議我先安裝基礎設施在我走之前與訓練前行。不幸的是我沒有接觸到這一點,並在谷歌搜索的主題是困難的,因爲CruiseControl.NET /南特/等頁面沒有真正解釋了「爲什麼」,我們應該設置這和「如何」一切togeather連接。

我們是一個小商店(約10名開發人員),並用幾乎全部的微軟技術,並盡我們的發展VB.NET。我們希望最終開始使用C#,但這是另一次。我一直在使用VS2008附帶的MSTest項目來進行單元測試,並且我一直在使用Visual Studio構建我的應用程序,並使用MSI安裝項目進行部署......我們也(不幸地)將VSS用於我們的原始控制 - 但這也是在砧板上,我真的很想擺脫它,並使用顛覆。

我知道我需要使用CruiseControl.NET的CI,並且或者惡性或MSBuild的構建的應用程序。我可能需要一個構建服務器來運行所有這些構建。但我找不到任何「連接」點,並解釋它們如何與互相之間進行交互,應該在構建服務器上應該如何,何時使用構建服務器進行構建(僅用於部署構建,還是僅僅用於構建只是想在你的本地環境中進行一些小改動後編譯你正在開發的應用程序?)。我也打算砍死MSTest,因爲我發現它是越野車,並將使用nUnit。

任何人都可以闡明我從'知道如何做TDD'到'建立合適的基礎設施,以便整個團隊都能做到並努力工作'這個差距?我確實瞭解持續集成是什麼,但是我不確定應該如何設置構建服務器,以及它如何與一切相關聯,以及爲什麼我們需要一個(例如管理層)。

非常感謝您的時間。

我需要什麼部分的finalbuilder?看來這與最終建造者和團隊城市有一些重疊。 Finalbuilder服務器似乎是一個CI服務器,所以我猜我不需要這個。 FinalBuilder似乎是一個構建服務器 - 但我認爲TeamCity也是一個構建服務器......並且Automise似乎是一個可視化Windows自動化工具,就像某種WinForms應用程序的開發平臺一樣...

_I也在The Team City Supported Apps Diagram中看不到最終生成器的支持:_

+1

我認爲下面的鏈接包含有關此主題的相當詳盡的一組信息:http://martinfowler.com/articles/continuousIntegration.html – Tomas 2009-12-14 18:36:14

回答

5

看看我幾周前做過的網絡研討會 - How To Start Unit Testing Successfully。在這次網絡研討會上,我討論了工具和單元測試的最佳實踐,並且針對像您一樣想要在其組織中引入單元測試的開發人員。

你想要把一個CI(持續集成)工藝到位,併爲您將需要三個工具的第一道命令:

  1. 源控制
  2. 構建服務器
  3. 構建客戶機/腳本

我希望你已經有了某種形式的源代碼控制,所以讓我們來談談其他兩個。

生成服務器 - 檢查源代碼控制,當它改變(或其他條件滿足)上運行一些客戶端上的構建腳本(或同一臺機器),有可我推薦幾款構建服務器JetBrain的TeamCity很容易安裝並使用(偉大的網絡界面),並免費爲多達20個開發人員(這就是你)。

構建腳本 - 在您的構建客戶端上,您需要運行構建腳本來構建解決方案並運行您的單元測試。 TeamCity有一些基本的構建&測試功能,但對於更高級的選項(構建安裝程序,文檔等),您將需要一些腳本運行器,我們使用FinalBuilder - 它不是免費的,但具有非常好的編輯器。如果你正在尋找一個免費的替代品,請看ANTNANT - 但要準備好編輯大量的XML。

其他工具 - 因爲成功的單元測試的一個重要的部分是它是多麼容易編寫和運行在開發人員的機器測試,我建議你檢查是否有更好的IDE或外部工具,將幫助開發人員編寫&運行他們的單元測試。

+1

TeamCity的+1。我們從CruiseControl.NET開始,轉而使用TeamCity,因爲它更容易管理。 NAnt腳本非常易於編輯,但您不需要在TeamCity上做很多工作。 – TrueWill 2009-12-14 19:36:51

+0

非常感謝這些信息。我編輯了我的原始帖子,注意我們使用VSS。雖然我討厭VSS =)。我希望得到顛覆的設置,以便我們可以最終擺脫那個有問題的VSS。我確實有一個問題 - 你使用你的構建服務器來編譯你自己的本地構建?還是僅用於部署構建? – dferraro 2009-12-16 01:42:25

+1

我在本地機器上運行構建腳本,但通常VS足以構建和測試我的項目 – 2009-12-16 05:14:09