首页 文章

如何在VSTS中合并代码覆盖率

提问于
浏览
2

我有一个包含多个项目的Visual Studio解决方案 . 我在我的解决方案中添加了相应的单元测试项目 . 我在VSTS中使用Cobertura来查找这些项目的代码覆盖率 .

Cobertura为所有测试项目发布单独的Cobertura.xml文件 .

我想要一种合并代码覆盖率报告的方法 . 我无法在VSTS任务中指定多个摘要文件的路径以发布代码覆盖率 . 有没有办法实现这一目标?

附加信息 - 所有测试用例都针对同一个DB运行

3 回答

  • 2

    我找不到任何直接的方法来做到这一点 . 所以,我在另一个VSO任务中使用了powershell脚本来实现结果 . 由于该工具在其中一个属性中生成了包含行数的xml,因此我编写了一个脚本来获取文件并读取该计数并生成具有所需Coverage报告的新xml . 它起作用,因为所有测试项目都针对相同的数据库,每个项目都针对不同的存储过程集 . 如果两个测试针对相同的存储过程,则它不起作用 .

    希望这可以帮助 .

    *** EDIT Adding Powershell Script which I used to merge** **** **(First 3 parameters are coverage paths from different unit test projects) ***

    Param(
    [string]$UnitTestPath1,
    [string]$UnitTestPath2,
    [string]$UnitTestPath3,
    [string]$targetCoverageFilePath
     )
    
    
    
    [xml]$XmlContent = Get-Content $UnitTestPath1
    $coverage = [float]$XmlContent.coverage.'lines-covered'
    
    $XmlContent = Get-Content $UnitTestPath2
    $coverage += [float]$XmlContent.coverage.'lines-covered'
    
    $XmlContent = Get-Content $UnitTestPath13
    $coverage += [float]$XmlContent.coverage.'lines-covered'
    $coverage
    
    $node = $XmlContent.SelectNodes("/coverage");
    
    $node[0].SetAttribute('lines-covered',$coverage) 
    $XmlContent.Save($targetCoverageFilePath)
    
    $coverage
    
  • -1

    我认为有一种方法可以通过在构建定义时在VSTS测试程序集任务中启用“代码覆盖率已启用”选项来实现此目的,而无需在代码覆盖率中传递路径 .

  • 0

    您可以拥有一个脚本文件,该脚本文件运行将文件数据(可能通过解析)合并到具有total的新文件的代码,然后您可以使用组合文件进行代码覆盖 .

相关问题