1 回答

TA貢獻1804條經驗 獲得超8個贊
終于明白了!它絕對不是 CI/CD 友好的(目前),但它至少可以用來了解 MvvmCross Xamarin 應用程序中單元測試的當前狀態。
此外,它不包括 Droid 項目。但是當我們使用 MVVM 時,Droid 項目應該只包含視圖、資源和綁定(理想情況下)。所以,在我看來,覆蓋它并不像其他項目(AppCore、服務等)那么重要......
無論如何,這就是我所做的:
安裝 NUnit、NUnitLite、NUnit3TestAdapter、OpenCover 和 ReportGenerator(全部通過 NuGet,直接從 Visual Studio 安裝)
*將應用程序解決方案
debugType
中buildOptions
的每個項目(Droid 項目和您擁有的任何測試項目除外)從“便攜式”更改為“完整”:轉到Project Properties -> Build。然后,在輸出部分單擊Advanced并選擇Debugging Information -> Change to Full。(謝謝,m4ss1m0g!)現在,運行 OpenCover 和 ReportGenerator 命令(或下面修改過的 .bat 腳本),將覆蓋率報告生成為人類可讀的 .htm 文件。用您的瀏覽器打開 .htm 文件,然后 - 瞧 - 您的報道被報告了!
這是我使用的簡單腳本,我將其放在解決方案的根文件夾中(注意OpenCover 和 ReportGenerator 包的版本,以及使用的所有路徑!您還可以使用 OpenCover 放置過濾器以排除或包含任何命名空間、類和你想要的方法)。
packages\OpenCover.4.6.519\tools\OpenCover.Console.exe -skipautoprops -output:<path-where-you-want-your-xml-results-to-be>\coverage.xml -target:<path-to-your-test-executable-generated-by-NUnitLite> -register:user -filter:"+[*]<your-solution-name>.* -[nunit*]* -[*<your-test-project-name>]*"
packages\ReportGenerator.4.0.4\tools\net47\ReportGenerator.exe -reports:<path-where-your-xml-results-output-are--same-as-output-path-above>\coverage.xml -targetdir:coverage
觀察:
在執行上述步驟并確認它有效后,您可以安裝AxoCover VisualStudio 擴展,它提供了一種查看當前代碼覆蓋率的實用方法,而不必運行上面的 .bat 腳本并導航到輸出覆蓋率所在的文件夾.htm 生成。
上述過程中的第三步(標有 *)是確保您的測試可執行文件考慮除您的測試項目之外的其他項目的關鍵。
- 1 回答
- 0 關注
- 136 瀏覽
添加回答
舉報