日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

【全】.net core平台单元/集成测试结果、覆盖率、圈复杂度到可视化HTML报告之路...

發(fā)布時間:2023/12/4 HTML 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【全】.net core平台单元/集成测试结果、覆盖率、圈复杂度到可视化HTML报告之路... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

.net core 平臺的測試框架有好幾個可供選擇,內(nèi)置的MSTest框架、NUnit框架以及強大好用的xUnit框架,依托宇宙最強的編輯器Visual Studio,可以開展非常友好的測試以及快樂的展示測試的結(jié)果。如果僅限于此,那么這篇文章對你來說就是多余的,不妨看看其他的東東;但如果你想脫離VisualStudio的舒服圈,獨立產(chǎn)生可以自由發(fā)布和查看的HTML報告,那么也許本篇文章能夠幫你節(jié)約大量的嘗試時間和徹底擺脫沮喪的心理,而體驗一場快樂的旅程。

  • 📢歡迎點贊 :👍 收藏 ?留言 📝 如有錯誤敬請指正,賜人玫瑰,手留余香!

  • 📢本文作者:由webmote 原創(chuàng),首發(fā)于 【CSDN】

  • 📢作者格言:生活在于折騰,當你不折騰生活時,生活就開始折騰你,讓我們一起加油!💪💪💪

1. 上手xUnit測試

利用向?qū)?#xff0c;來生成一個新的xUnit測試項目即可。

當然,你也可以改造一個類庫文件,只需要在Project文件內(nèi)引用這些類庫即可。

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>net5.0</TargetFramework><IsPackable>false</IsPackable></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" /><PackageReference Include="xunit" Version="2.4.1" /><PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets><PrivateAssets>all</PrivateAssets></PackageReference><PackageReference Include="coverlet.collector" Version="3.1.0"><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets><PrivateAssets>all</PrivateAssets></PackageReference></ItemGroup></Project>

編寫xUnit的測試用例超級簡單,只需要在類函數(shù)增加聲明[Fact]即可。

有關怎么編寫單元測試,可以參考《[關于單元測試,你不知道的那些事]。(https://blog.csdn.net/codeex/article/details/120476609)》

好了,一切就緒,開始我們的生成報告之旅。

2. 代碼覆蓋率(Code Coverage)

據(jù)微軟的文檔記載,數(shù)據(jù)采集功能是在測試平臺的15.3增加支持的,其被集成在VS 2017 15.3+ 和dotnet-cli 2.0.0+ 上,而有了數(shù)據(jù)采集擴展后,就可以對會話和測試用例的一些事件就行分析了,在之上進行擴展就有了覆蓋率、圈復雜度等其他指標的度量了。

使用如下命令收集覆蓋率等的測試:

dotnet test --collect "Code Coverage"

在 Windows 上,可以使用 --collect “Code Coverage” 選項收集代碼覆蓋率。此選項將生成“.coverage”文件,該文件可在?Visual Studio 2019 Enterprise中打開。

當然在Linux平臺,這個命令的響應是:

數(shù)據(jù)收集器“Code Coverage”消息: 沒有可用的代碼覆蓋率數(shù)據(jù)。代碼覆蓋率目前僅在 Windows 上受支持。。

若要在 .NET Core 支持的任何平臺上收集代碼覆蓋率,請安裝 Coverlet 并使用 --collect:“XPlat Code Coverage” 選項。

第一小節(jié)給出的例子中已經(jīng)安裝了Coverlet包支持。

因此我們可以執(zhí)行下列命令,產(chǎn)生Coverage.cobertura.xml

dotnet test --collect:"XPlat Code Coverage"

正在啟動測試執(zhí)行,請稍候…
總共 1 個測試文件與指定模式相匹配。
附件:
/root/dotnet/TestResults/93b42aca-c0e7-4e39-9253-c176506b3be0/coverage.cobertura.xml
已通過! - 失敗: 0,通過: 1,已跳過: 0,總計: 1,持續(xù)時間: < 1 ms

產(chǎn)生的結(jié)果存放在 TestResults文件夾的隨機產(chǎn)生的GUID文件夾內(nèi)。

此處應該是?dotnet-cli?的限制,收集的結(jié)果并不能指定為確切的文件夾,因此不要費勁巴拉的找參數(shù)了。

注意: 如果需要集成到自動化工具內(nèi),需要考慮怎么從這個隨機的文件夾把文件拷貝出來,一種方式是利用shell的find/grep等命令搜索命令輸出的文本,找到完整的輸出路徑。

有了這個xml文件以及ReportGenerator工具,我們就可以產(chǎn)生測試覆蓋率和圈復雜度的報告了。

reportgenerator -reports:coverage.cobertura.xml -targetdir:report

命令執(zhí)行后產(chǎn)生一堆的html、css、js文件,看到這么多文件不要慌,讓我們找到index.html,打開它就可以了。

酷炫的報告就這么赤果果的呈現(xiàn)在你的面前。

3.測試結(jié)果報告(Test Result)

測試結(jié)果報告說容易也容易,說復雜,那就非常的復雜了。

為什么這么說呢?

主要是因為dotnet-cli已經(jīng)自帶了報告結(jié)果的輸出。

例如,下面命令(在項目目錄下),就輸出了簡單的統(tǒng)計結(jié)果:

dotnet test

Starting test execution, please wait…
A total of 1 test files matched the specified pattern.
Passed! - Failed: 0, Passed: 3, Skipped: 0, Total: 3, Duration: 3 ms - MyXunitTest.dll (net5.0)

是的,如果這樣就夠了,那么就非常簡單,是不是?

當然如果你還想要稍微詳細點的輸出,也是支持的,我們利用console來收集信息,命令如下:

dotnet test -l "console;verbosity=detailed"

輸出內(nèi)容如下:

Starting test execution, please wait…
A total of 1 test files matched the specified pattern.
D:\github\xunit-xml2html\MyXunitTest\bin\Debug\net5.0\MyXunitTest.dll
[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.4.3+1b45f5407b (64-bit .NET 5.0.11)
[xUnit.net 00:00:00.24] Discovering: MyXunitTest
[xUnit.net 00:00:00.27] Discovered: MyXunitTest
[xUnit.net 00:00:00.27] Starting: MyXunitTest
[xUnit.net 00:00:00.32] Finished: MyXunitTest
Passed MyXunitTest.UnitTest1.Test2 [1 ms]
Passed MyXunitTest.UnitTest1.Test1 [< 1 ms]
Passed MyXunitTest.UnitTest1.Test3 [< 1 ms]

Test Run Successful.
Total tests: 3
Passed: 3
Total time: 1.1061 Seconds

嗯,到此為止,仍然是利用dotnet-cli就可以完成的,那如果非要一個html的報告,那么問題就來了。

3.1 TRX格式的價值

TRX測試結(jié)果,估計只有微軟能看懂吧,因此輸出的結(jié)果可以通過VisualStudio打開。

嗯,是的,可以分享給有VS安裝的同事了。
命令:

dotnet test --logger trx

這個結(jié)果文件有一點值得稱贊,它不需要企業(yè)版的VS。

GitHub網(wǎng)絡上還有很多Trx轉(zhuǎn)到html的工具,由于年老失修,都是殘廢之身了。

例如 TrxerConsole 和?trx2html,如果有喜歡折騰的朋友,可以下來瞧瞧,?trx2html 還是可以生成半截html的,界面也很美觀,只可惜兼容性已經(jīng)非常差了,如果有達人維護下,應該仍是個好工具。

其他還有一些非主流,幾乎都是無用的。

3.2 輸出到xml文件

既然TRX的路已經(jīng)是斷頭路了,那么我們只有重回xml這條大路上。

關鍵的一刻來了。
這里需要引入一個包?XunitXml.TestLogger?,可以去github地址。

它支持NUnit和Junit,是非常好的xml生成工具。

Xunit logger 產(chǎn)生的xml是xunit v2 format?.

命令如下:

dotnet test --logger:"xunit;LogFilePath=result.xml"

輸出的路徑是指哪打哪。

由xml生成到html不是一個難事了,你可以自己寫個轉(zhuǎn)換工具。

當然了,這里有個現(xiàn)成的轉(zhuǎn)換工具:?xunit-xml2html。

利用工具,可以方便的把xml生成為html了。


嗯嗯,大功告成,一切都已經(jīng)搞定了。

3.3 .net core 測試web時缺少 deps.json文件

有時候,項目會提示 threw exception: System.InvalidOperationException: Can’t find’[path removed]\TestRepro.Tests\bin\Debug\TestRepro.deps.json’.

這時候可能是缺少引用這個包導致的,這個錯誤很隱晦,CI的時候出現(xiàn)率極高。

Microsoft.AspNetCore.Mvc.Testing

4. 小結(jié)

.net core 測試的報告節(jié)講完了,你應該可以拿給領導一份滿意的答卷了吧?

👓都看到這了,還在乎點個贊嗎?

👓都點贊了,還在乎一個收藏嗎?

👓都收藏了,還在乎一個評論嗎?

總結(jié)

以上是生活随笔為你收集整理的【全】.net core平台单元/集成测试结果、覆盖率、圈复杂度到可视化HTML报告之路...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。