gpt4 book ai didi

mstest - 合并同一 DLL 的代码覆盖率

转载 作者:行者123 更新时间:2023-12-02 07:04:14 25 4
gpt4 key购买 nike

我正在处理 MSTEST.EXE (Visula Studio 2010) 生成的代码覆盖率。我在同一个 dll 上运行了三种类型的测试,这会生成三个代码覆盖率文件。

  1. 最小起订量单元测试(作为门控 checkin 运行)
  2. 集成单元测试(Jenkins 中的单独工作)
  3. GUI 单元测试(Jenkins 中的单独工作)

我想将文件中的所有三个代码覆盖率合并为一个,以便生成综合报告。我尝试了下面的代码。

Public Function JoinCoverageFiles(pcolCoverageFiles As List(Of String)) As CoverageInfo
Dim lobjResultCoverageInfo As CoverageInfo = Nothing
Console.WriteLine("Joining coverage file(s)...")
Try
For Each lstrCoverageFile As String In pcolCoverageFiles

Dim lobjCurrentCoverageInfo As CoverageInfo = CoverageInfo.CreateFromFile(lstrCoverageFile)

If lobjResultCoverageInfo Is Nothing Then
lobjResultCoverageInfo = lobjCurrentCoverageInfo
Continue For
End If

Dim lobjJoinedCoverageInfo As CoverageInfo = Nothing

Try
lobjJoinedCoverageInfo = CoverageInfo.Join(lobjResultCoverageInfo, lobjCurrentCoverageInfo)
Finally
lobjCurrentCoverageInfo.Dispose()
lobjResultCoverageInfo.Dispose()
End Try

lobjResultCoverageInfo = lobjJoinedCoverageInfo
Next
Catch generatedExceptionName As Exception
If lobjResultCoverageInfo IsNot Nothing Then
lobjResultCoverageInfo.Dispose()
End If
Throw
End Try
Console.WriteLine("Joining coverage file(s)... Done")
Return lobjResultCoverageInfo
End Function

使用此代码,我可以加入代码覆盖率文件,但我想要合并结果,以便我可以了解在所有三个单元测试中覆盖和未覆盖哪些代码。

最佳答案

您可以使用 CoverageInfo 类获取所有运行的合并覆盖率信息。

string ccFileMerged = Path.Combine(Path.GetTempFileName + ".coverage");
CoverageInfo.MergeCoverageFiles("A.coverage", "B.coverage", ccFileMerged);
// now you can use the ccFileMerged to get your merged data

但是您应该注意,合并将根据一些静态信息对 dll 进行分组,例如。 dll GUID,每次构建都会重新生成。因此,只要您确保所有 .coverage 文件都是通过使用相同 dll 的运行生成的,合并将是无缝的。如果每次运行都会生成这些 dll,您最终会在 .coverage 文件中看到每个唯一 dll 的 dll 条目

关于mstest - 合并同一 DLL 的代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com