上一節我們講解了如何使用opencover生成單元測試覆蓋率報告,opencover默認生成的report為xml格式,可讀性並不是特別強,如果靠閱讀opencover生成的results.xml來分析測試結果顯然是非常耗費時間和精力的.
下面介紹一款工具,可以把opencover生成的xml覆蓋率報告轉化為交互的html.
繼續使用上一節項目,使用nuget添加對reportgenerator的引用.
Reportgenerator安裝完成以后,在項目的packages目錄下面會有以下目錄
ReportGeneratorxxx\tools
我們打開這個目錄內容如下:
期中ReportGenerator.exe是我們要使用的生成html報告的工具.
這里我們新建一個bat文件,命名為generateReport.bat,其中代碼如下
"E:\personal project\newTest2018\ConsoleApp1\packages\ReportGenerator.3.1.2\tools\ReportGenerator.exe" -reports:"E:\personal project\newTest2018\ConsoleApp1\NunitTest\bin\Debug\results.xml" -targetdir:"coverage"
第一個空格前為ReportGenerator所在位置, -reports后跟的參數為我們用於生成html的xml文件,這個xml文件是上一節我們使用opencover生成的. –targetdir是要存放xml報告的目錄.
打開Jenkins,新建一個ReportGeneratorTest的項目,build欄添加windows batch command步驟,然后在命令框里輸入剛創建的generateReport.bat的位置
點擊保存,然后執行build Now,如果配置正確的話,則會生成一條成功構建記錄,打開記錄可以看到Console out輸出的內容和下面類似
從控制台輸出可以看到生成成功了,然后這個目錄對我們的意義並不大,我們需要看到是生成的代碼覆蓋率報告.我們打開目錄下的coverage目錄(在generateReport.bat里配置的輸出目錄).可以看到如下類似內容
期中index.htm為導航頁面.我們打開index.htm內容類似如下
可以看到上面是測試覆蓋率的總體報告,包括創建時間,解析器,程序集數量,類數量,覆蓋行數,未覆蓋行數,行數覆蓋率等.
下面則是每一個類的覆蓋率報告.並有圖形化展示.
我們點擊類名(比如NunitTest.GeneralTest)則會進入這個類測試的更詳細頁面.如下圖
期中上面是總結,下面是此類中每個方法的覆蓋率報告.右側是方法/屬性導航,點擊會跳到這個方法/屬性.點擊會進入該方法/屬性對應的代碼
其中紅色表示未覆蓋的代碼,綠色代表覆蓋的代碼.