Jenkins+ C# +單元測試+覆蓋率
2018/04/10 16:03:35
0
1654
Jenkins+ C# +單元測試+覆蓋率
簡介 |
程式開發完成後,每次都用人工方式測試,既浪費時間又可能漏掉沒有測試到的程式邏輯,這是一個不科學的測試方法。接下來要介紹使用Jenkins +C# + NUnit(單元測試) + Cobertura(覆蓋率),來進行科學的測試。 |
作者 |
姜志民 |
一、準備商業邏輯程式
在類別庫專案中,撰寫一個簡單的程式如下:
二、準備單元測試程式
在單元測試專案中,撰寫一個程式,準備用來對DataService.cs做「單元測試+覆蓋度」使用的,程式如下:
三、準備軟體工具
下列的軟體會幫助產出的單元測試結果進行資料格式轉換、產生報表與覆蓋率:
NuGet:https://www.nuget.org
NUnit Console:http://nunit.org
OpenCover:https://github.com/OpenCover/opencover/releases
ReportGenerator:https://github.com/danielpalme/ReportGenerator/releases
OpenCoverToCoberturaConverter:https://www.nuget.org/packages/OpenCoverToCoberturaConverter
四、安裝Jenkins Plugin
安裝下列plugin,安裝成功如下圖:
a. HTML Publisher
b. Cobertura
c. NUnit
五、建置Free-Style軟體專案
輸入名稱並選擇「建置Free-Style軟體專案」。
設定將source code從Git取回。
下圖是進行程式編譯、單元測試結果進行資料格式轉換、產生報表與覆蓋率的腳本。
下圖為設定覆蓋率報表與單元測試結果的資料來源,此資料來源為上述的腳本。
六、單元測試與覆蓋率結果
執行建置後,可以看到多出好幾個項目,分別「HTML Report」、「Coverage Report」 與「最新測試結果 」。
進入Coverage Report項目如下圖,再進入DataClassLibrary。
再點選DataClassLibrary/DataService.cs
七、結論
相信各位讀者可以體會到自動化測試(單元測試+覆蓋率)的好處,可以讓軟體品質保持在一定水準之上。在專案開發執行過程中,常常都會聽到下列的對話:
PM大大:「A君你程式測試好了嗎?」
A君:「測試好了。」
PM大大:「A君你不是說程式已經測試好了,怎麼我一測就壞掉!」
A君:「我檢查一下。」
PM大大:「B君你這個程式之前不是可以執行,現在這麼壞掉不可以用了!」
B君:「可能之前程式邏輯有動到,我查查。」
在專案中,實行自動化測試(單元測試+覆蓋度),可以減少上述問題,專案管理人員可以從Jenkins的單元測試+覆蓋度報表,馬上知道有多少程式是沒有通過單元測試、有多少程式邏輯是沒有被執行到的,不需再向程式開發人員問詢程式測試狀況。