跳到主要內容

利用 Jenkins持續整合,自動產生Coverage報表

話說同事接了大案子,業主要求必須做單元測試,還要有涵蓋率。這不是很簡單的事嗎?問題就出在他們為了省經費,只用免費的Express版開發,幸好VS2015 Express全加上Unit Test,但是看不到Coverage了。
我自己也很久沒有用MSTest,多半用NUnit,利用VS的套件或TestDriven.Net Personal版就搞定,但是得讓同事方便,就裝台Jenkins Server。起初都還簡單,但是在產出報表時,照著網路上的步驟,怎麼也測不出來。
後來看到小風這篇四年前的文章,想說依樣畫葫蘆總行了吧?沒想到還是卡關試不出來。
原來是微軟把功能閹割精簡,現在沒有CodeCoverage.exe這支程式。好,那我再試Visual Studio 2015/2017在VStest能產出Coverage,沒想到居然不能指定TestResults底下的目錄名稱,*.coverage檔也不能指定檔名,網路上找的招數都沒用,ReportGenerator這招也沒用了。

接著又花了兩個小時去找其他Tool,大都是要改用NUnit或是用OpenCover之類;後來實在受不了,回頭改CoverageConverter.exe,讓它能自動去找TestResults目錄下最新的.coverage,接著就可以照小風的做法,產出Coverage.xml。最後再利用msxsl.exe轉成CoverageResult.xml,連結到Emma Coverage Report。

若想用Jenkins做到相似性檢查,程式碼風格檢查,程式複雜度分析等等高難度的工作,請參考使用Jenkins打造.Net CI Server 系列,我在此沒做,是因為團隊成員無法接受。

結論:若貴公司不是像敝小公司這麼窮,最簡單的方法就是丟到微軟的雲端,要什麼都做得出來。要省錢的話,請努力爬文+自幹。

P.S. 我不知道Test Class踩到什麼雷,用VSTest 14會找不到Unit Test Method,得用VSTest 15才行,所以Jenkins上又更新到VS 2017的Tool。

留言

這個網誌中的熱門文章

DBeaver 介面語言

DBeaver是我個人頗常用的一套跨平台Database管理工具,最近升級後發現Windows版本居然變成簡體中文,而且無法切換為英文。

自然人憑證讀卡機驅動程式

鳥毅用的是第一代的自然人憑證讀卡機,EZ100PU(後來有同事買EZmini可以讀SIM卡似乎更好),每年報稅時用一次。 本來只是要申請些政府業務,一時之間找不到光碟,沒想到在 驅動程式下載 居然看到Linux和Mac的驅動程式,剩下的就是政府單位的網頁和程式應該改版了吧!!!

如何將較高版本SQL Server複製到低版本SQL Server (降級為舊版)並保留權限及資料庫圖表

一般若是要將SQL Server裡的Database轉往其他Server時,最簡單的方式就是備份(Backup)後再還原(Restore),或者是䣃離(detach)後附加(attach)。 但是很不幸地,若是由較低版本(e.g. 2008)到較高版本(e.g. 2012)要怎麼辦呢?