【发布时间】:2010-11-13 03:28:39
【问题描述】:
所以我有一些代码可以从 .coverage 文件中读取方法...
using (CoverageInfo info = CoverageInfo.CreateFromFile(this.myCoverageFile))
{
CoverageDS ds = info.BuildDataSet();
foreach (ICoverageModule coverageModule in info.Modules)
{
CodeModule currentModule = new CodeModule(coverageModule.Name);
byte[] coverageBuffer = coverageModule.GetCoverageBuffer(null);
using (ISymbolReader reader = coverageModule.Symbols.CreateReader())
{
Method currentMethod;
while (reader.GetNextMethod(out currentMethod, coverageBuffer))
{
if (currentMethod != null)
{
currentModule.Methods.Add(currentMethod);
}
}
}
returnModules.Add(currentModule);
}
}
...但我也希望能够读取已导出到 xml 的 .coverage 文件。原因是 .coverage 文件要求源 dll 位于测量代码覆盖率时的确切位置,这对我不起作用。
当我尝试使用 CreateFromFile(string) 加载 coveragexml 文件时,出现以下异常。
Microsoft.VisualStudio.Coverage.Analysis.InvalidCoverageFileException 未处理 Message=Coverage 文件 “unittestcoverage.coveragexml”是 无效或损坏。
coveragexml 文件可以在 Visual Studio 中正常打开,所以我认为文件格式没有任何问题。
我知道 CoverageDS 可以导入 xml 文件,但 API 不够直观,我能找到的唯一使用示例是...
using(CoverageInfo info = CoverageInfo.CreateFromFile(fileString))
{
CoverageDS data = info.BuildDataSet();
data.ExportXml(xmlFile);
}
...它没有告诉我如何从该文件中实际读取覆盖率数据。
有人知道如何处理 .coveragexml 文件中的代码覆盖率数据吗?
【问题讨论】:
-
对于未来的读者:在下面的 URL 中有一个“线索”。 “要将二进制 VSTest.Console 输出转换为 Microsoft CoverageDS XML 格式,您可以使用以下 V0.14 发行说明中引用的预构建应用程序之一,或者您可以构建以下转换器应用程序:”我 ~~think~~ “CoverageInfo.CreateFromFile”用于从 二进制文件(来自 VSTest.Console)而不是 trx 文件(只是 xml)加载。请参阅:wiki.jenkins-ci.org/display/JENKINS/MSTest+Plugin 我不知道 (d'oh) trx 文件只是 xml。 :(
标签: c# visual-studio-2010 code-coverage