【发布时间】:2013-12-10 15:56:59
【问题描述】:
我正在处理由 MSTEST.EXE (Visula Studio 2010) 生成的代码覆盖率。 我在同一个 dll 上运行三种类型的测试,生成三个代码覆盖率文件。
- 起订量单元测试(作为门控签到运行)
- 集成单元测试(Jenkins 中的单独工作)
- 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
使用这段代码,我可以加入代码覆盖率文件,但我想要合并结果,以便了解在所有三个单元测试中哪些代码被覆盖和未被覆盖。
【问题讨论】:
-
是的,Allen,但是这个博客没有提到合并代码覆盖结果。谢谢吉尔
-
您能否详细说明您对合并的期望? CoverageInfo.MergeCoverageFiles api 确实合并了 .coverage 文件,只要您不更改各种测试运行中的 dll,它就可以很好地工作。
-
感谢艾伦的“CoverageInfo.MergeCoverageFiles”,但我找不到任何相同的例子,所以我可以实现这个。
标签: mstest code-coverage