【问题标题】:Visual Studio Code Coverage obsolete with vNext projects?vNext 项目的 Visual Studio 代码覆盖率已过时?
【发布时间】:2015-05-19 18:54:49
【问题描述】:

由于 Visual Studio (vstest.console.exe & codecoverage.exe) 中内置的代码覆盖实用程序会分析二进制文件,例如 .dll.exe 文件,因此这些工具是否仍可用于 vNext 项目(因为它们不会生成二进制文件)?

我正在尝试使用 vNext 类库在解决方案上运行代码覆盖,但我能够生成的唯一信息是 xUnit .dll 文件而不是我的项目。

【问题讨论】:

    标签: c# visual-studio code-coverage visual-studio-2015


    【解决方案1】:

    我们的团队能够使用 OpenCover 为 vNext 解决方案生成代码覆盖率文件。这需要一些开销,因为 OpenCover 会逐个项目地进行分析,因此您需要编写一个脚本来循环浏览解决方案中的项目,运行 OpenCover,然后合并覆盖率文件。

    这是我们在脚本中所做的一个示例,以防有人想要复制它:

    我们循环遍历每个项目并调用 DNX 引擎和 OpenCover 来为该项目生成覆盖范围。

    foreach($projectFile in $projectFiles)
    {
        $project=$projectFile.Directory.Name
    
        $buildCommands=$buildCommands+$projectFile.Directory.FullName
        $testPoject = //Path//To//Test//Projects
        if(Test-Path $testPoject)
        {
            _Verbose "$testPoject exists for $project"
            $testCommand = "$OpenCoverUtil -register:user ""-excludebyfile:*\*.gen.cs"" ""-target:$DnxPath\dnx.exe "" ""-targetargs: $testPoject\project.json test"" ""-output:$Outpath\CS\$project.coverage.xml"" -skipautoprops -returntargetcode -filter:""+[$project*]*"""
            _Verbose $testCommand
            $testCommands=$testCommands+$testCommand
        }
    }
    

    【讨论】:

    • 你介意分片你的脚本吗?我真的需要一些东西来做代码覆盖,但我无法让 OpenCover 工作。
    • 谢谢,我试试看。您的脚本现在如何识别 $OpenCoverUtil 中的内容?
    • @Complexity - 将 $OpenCoverUtil 设置为 OpenCover .exe(使用路径或将路径添加到 PATH 环境变量)
    • 该脚本是用什么语言编写的?
    • 使用您的脚本后,我的控制台中的输出是“无输出,这可能有多种原因...”。有什么想法吗?
    【解决方案2】:

    在一个全新的解决方案中,包括

    • 一个 ASP.NET 5 预览模板空项目
    • 一个 MS 测试单元测试项目

    运行测试 -> 分析代码覆盖率 - 所有测试

    确实成功完成,但它只显示单元测试项目的代码覆盖率。此外,您似乎已经注意到,您无法将 vNext 项目的引用添加到您的单元测试项目中,而且 xUnit 是当前唯一支持的测试 project framework

    我认为可以安全地假设就目前的情况而言,是的,这些工具对于 vNext 项目来说是“损坏的”,因为它们不会脱离 xunit.runner.dnx 运行器。

    有趣的是,同样的文档确实声明您可以从 VS Test Runner 运行 xunit.runner.dnx 测试,所以看起来这类问题至少在他们的雷达上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多