我正在使用MSTEST.EXE(Visula Studio 2010)生成的代码覆盖率 . 我有三种类型的测试在同一个dll上运行,它生成三个代码覆盖文件 .
-
moq单元测试(作为门控办理登机手续)
-
集成单元测试(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
使用此代码,我可以加入代码覆盖率文件,但我想要合并结果,这样我就可以知道在所有三个单元测试中覆盖和发现了哪些代码 .
1 回答
您可以使用CoverageInfo类获取所有运行的合并覆盖率信息 .
但是,您应该注意,合并将根据一些静态信息对dll进行分组,例如 . dll guid,每个版本重新生成 . 因此,只要您确保使用相同dll的运行生成所有.coverage文件,合并将是无缝的 . 如果每次运行生成这些dll,您最终会在.coverage文件中看到每个唯一dll的dll条目