用CruiseControl.Net來進行持續化集成二
上篇文章中,談到了CC.Net的安裝,部署。并且實現了監視vss源代碼服務器,自動獲取代碼,自動構建,并檢查代碼規范等內容。本文著重介紹如何用CC.Net來進行自動化單元測試。
CC.Net默認支持的單元測試工具是NUnit,下面也談一下如何配置實現NUnit的自動單元測試功能。打開CursieControl.Net Server的配置文件CursieControl.Net config,上文中已經創建了一個工程,代碼為:
<cruisecontrol> 
<project name="TestProject" webURL="http://127.0.0.1/ccnet/"> 
<workingDirectory >E:\DailyBuild</workingDirectory> 
<artifactDirectory>E:\DailyBuild\Log</artifactDirectory> 
<labeller type="dateLabeller"></labeller> 
<sourcecontrol type="vss" autoGetSource="true" applyLabel="true"> 
<project>$/Jillzhang.DailyBuild.root/Jillzhang.DailyBuild</project> 
<username>zhangyubin</username> 
<password>123456</password> 
<ssdir>\\192.168.1.200\vss\</ssdir> 
<cleanCopy>false</cleanCopy> 
</sourcecontrol> 
<tasks> 
<exec> 
<executable>D:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable> 
<baseDirectory>E:\DailyBuild</baseDirectory> 
<buildArgs>DailyBuild.msbuild /p:Configuration=Release</buildArgs> 
<buildTimeoutSeconds>1200</buildTimeoutSeconds> 
</exec > 
<merge> 
<files> 
<file>E:\DailyBuild\log\Build.FxCop.xml</file> 
</files> 
</merge> 
</tasks> 
</project> 
</cruisecontrol> 
要添加NUnit任務,應該在<project>元素中添加<nunit>子元素,有關它的用法也可以參考文檔,在上文的四個項目中Jillzhang.DailyBuild.Test是用于單元測試的項目,在<tasks>中添加<nunit>,代碼如下:
<nunit> 
<path>D:\Program Files\NUnit 2.4.6\bin\nunit-console.exe</path> 
<assemblies> 
<assembly>E:\DailyBuild\Jillzhang.DailyBuild.Test\bin\Release\Jillzhang.DailyBuild.Test.dll</assembly> 
</assemblies> 
<timeout>60000</timeout> 
</nunit> 

如果經常使用的nunit是帶界面的,它在安裝目錄中是nunit.exe,而我們在這里要使用它的命令行工具nunit-console.exe,用path來指定這個工具的絕對路徑,在<assemblys>中添加要進行單元測試的程序集,注意,為了保證效果,此處的dll最好和msbuild出的dll位置保持一致,比如如果是Debug模式,那此處應該為:E:\DailyBuild\Jillzhang.DailyBuild.Test\bin\Debug\Jillzhang.DailyBuild.Test.dll
好了,添加這行代碼之后,我們便可以進行自動化單元測試了,看看效果吧,重新簽出嵌入解決方案,打開web dashboard網站。我們可以看到工程的活動狀態有如下的變化
在嵌入前
嵌入后
當vss中有文件版本發生變化的時候,CC.Net能檢測到這種變化,并加以處理,在檢查更新的時候,狀態變為CheckingModifcations.當檢查到有更新的時候,CC.Net會啟動生成操作,如圖:
當CC.Net的活動狀態再次從Buildding變為Sleeping的時候,表示項目集成完成,此時點擊項目名稱,可以查看最后一次的集成結果,首先我們可以看此次集成誰更新了項目文件,都更新了那些文件,如圖:
然后我們還可以查看生成結果,相比上文,加入nunit之后,生成結果會多出如下部分:
也可以通過nunit detail來查看具體信息。
具體信息為:
在此個頁面,你能清晰地看到單元測試是否通過。
接下來介紹一款非好好的檢測工具cctray.exe,它實現了對cc.net的實時監控功能,作用和web doashboard差不多。你可以在網站的導航欄中找到它的下載連接:
下載安裝,打開后cctray是一個這樣的界面
點擊File的Setting選項,出現如下界面:
先來添加對一個工程的監測,點擊Add
點擊Add Server
CCTray會自動獲取工程列表,選擇想監測的工程。
最終配置好的cctray如下圖所示:
雙擊右方的ListView項,可以打開web dashboard。當有代碼有更新的時候,cctray表示如下:
通過圖標顏色的更改可以清晰的看出當前CC.Net的運行狀態
有關自動發布,自動部署等功能留待下篇。
出處:http://jillzhang.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

浙公網安備 33010602011771號