Visual Studio代码覆盖率已过时使用vNext项目?

时间:2015-05-19 18:54:50

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

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

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

2 个答案:

答案 0 :(得分:2)

我们的团队能够使用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
    }
}

答案 1 :(得分:0)

在包含

的全新解决方案中
  • ASP.NET 5预览模板空项目
  • MS测试单元测试项目

跑步测试 - >分析代码覆盖率 - 所有测试

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

我认为可以安全地假设,就像现在一样,是的,这些工具对于vNext项目来说是“破坏”的,因为它们不会运行<tbody class="searchable"> <tr> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td class="spammy_color"><input type="checkbox" checked="checked" /></td> </tr> <tr> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td class="spammy_color"><input type="checkbox" checked="checked" /></td> </tr> <tr> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td class="spammy_color"><input type="checkbox" checked="checked" /></td> </tr> <tr> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td><input type="checkbox" /></td> <td class="spammy_color"><input type="checkbox" checked="checked" /></td> </tr> </tbody> 跑步者。

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