在cruisecontrol.net c#中获取代码覆盖率

本文关键字:获取 代码覆盖率 cruisecontrol net | 更新日期: 2023-09-27 18:00:07

我正试图在cruisecontrol.net中获得代码覆盖率。使用以下NANT脚本:

<target name="code_coverage" description="finds the code covered with tests">
  <exec program="${vstest_console}">
    <arg value="/Settings:CodeCoverage.runsettings" />
    <arg value="/EnableCodeCoverage" />
    <arg value="Tests.dll"/>
  </exec>
</target>

我可以得到一份保险范围文件。首先,.coverage文件的名称是以用户名的形式出现的,该用户名附加了当前日期时间,并位于一个随机命名的文件夹下。在.runsettings文件文档中,我找不到任何关于更改.coverage文件名称的信息。我需要更改这个文件的名称。更大的问题是创建了一个具有某种GUID类型名称的子文件夹,覆盖率文件被转储到该子文件夹中,并且每次在代码覆盖率为ON的情况下运行测试时,它都会发生变化

其次,有人能帮我从中提取覆盖路径百分比吗。如果覆盖率低于一点,我只需要使构建失败。谷歌上有很多帮助,但都是VS 2010及之前的版本。我需要VS 2012或VS 2013的帮助。目前我在VS2013Ultimate上工作,并使用.runsettings文件进行代码覆盖。

在cruisecontrol.net c#中获取代码覆盖率

我仍然使用旧的mstest,但在testsettings文件中,有一个选项可以控制输出文件夹的一部分:

  <NamingScheme baseName="cover_me" appendTimeStamp="false" useDefault="false" />

这是TestSettings根元素的子元素,所以文件的开头看起来是这样的:

<TestSettings name="CodeCoverage" id="f5644e34-f879-42fe-8b36-d1ca1cc7c3c5" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>These are default test settings for a local test run.</Description>
  <NamingScheme baseName="cover_me" appendTimeStamp="false" useDefault="false" />

至于百分比使用mstest,我需要将二进制输出转换为xml我在这里描述了过程:http://rubenwillems.blogspot.be/2011/09/setting-up-ccnet-in-combination-with.html向下滚动一点以查看覆盖部分。转换器程序的来源也在那里,因为原始页面已经不存在了:-(

从那时起,它只运行xslt来检查它是否低于某个百分比。这可以在转换器程序中,也可以作为一项额外的任务。