iT邦幫忙

0

計算C#解決方案的程式碼覆蓋率時,如何將未被測試覆蓋的專案也包括在內?

  • 分享至 

  • xImage

大家好,我用Visual Studio在開發一個解決方案,想為裡面的專案逐漸加入單元測試。

階層如下,有 5 個專案,2 個用於測試Project1和Project2:


解決方案
  |
  |- Project1 (100 行)
  |- Project2 (100 行)
  |- Project3 (100 行)
  |
  |- Project1.UnitTests
  |- Project2.UnitTests

我跟隨微軟網頁的教學,取得這個解決方案的程式碼覆蓋率,並將其輸出為文字檔:

dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools
dotnet test --test-adapter-path:. --collect:"XPlat Code Coverage"
reportgenerator "-reports:./**/coverage.cobertura.xml" "-targetdir:Reports_Coverage" -reportTypes:TextSummary;

雖然文字檔有覆蓋率,但是計算未將Project3納入公式中...

  • Project1、Project2和Project3各有100行程式碼,Project1、Project2都經過測試並有100%的覆蓋率,而Project3則為0%(沒有測試)
  • ReportGenerator給我的總覆蓋率是100%(因為Project1和Project2都有100%的覆蓋率)
  • 但我期望的是67%的覆蓋率(將完全沒有寫測試的Project3納入公式中)

想請教各位大大如何取得包括包含無測試的專案的程式碼覆蓋率?

謝謝。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
JamesDoge
iT邦高手 1 級 ‧ 2023-03-10 10:44:51

您可以在執行 dotnet test 命令時,指定要包括的專案。以下是一個範例命令:

dotnet test Project1.UnitTests.csproj Project2.UnitTests.csproj Project3.csproj --collect:"XPlat Code Coverage"

這個命令會執行Project1.UnitTests、Project2.UnitTests和Project3專案的測試,並產生程式碼覆蓋率報告。請注意,您需要安裝 coverlet.collector 套件來支援 XPlat Code Coverage,您可以使用以下命令進行安裝:

dotnet tool install coverlet.collector -g

參考看看,也許這樣就可以確保報告中包括未被測試覆蓋的專案

0
27984516032
iT邦見習生 ‧ 2023-03-22 23:03:42

If the project is not critical to the overall functionality of the solution, you may choose to exclude it from the coverage report altogether. This will ensure that the post accurately reflects the coverage of the code that is important to the solution.

我要發表回答

立即登入回答