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 关注
- 109 浏览
添加回答
举报