TeamCity 中的 FAKE (F# Make) dotCover 覆盖范围
FAKE (F# Make) dotCover coverage in TeamCity
我有一个 FAKE 构建脚本,其中包含使用 DotCoverNUnit3 扩展的 DotCover 覆盖步骤:
let filters = ""
!! (buildDir @@ "/*.UnitTests.dll")
|> DotCoverNUnit3 (fun p ->
{ p with
Output = artifactsDir @@ "NUnitDotCover.snapshot"
Filters = filters }) nunitOptions
快照生成正确,但覆盖概览未出现在 TeamCity 构建中。
然后我在构建快照后尝试调用 DotCoverReport:
DotCoverReport (fun p ->
{ p with
Source = artifactsDir @@ "NUnitDotCover.snapshot"
Output = artifactsDir @@ "NUnitDotCover.xml"
ReportType = DotCoverReportType.Xml }) true
这会生成预期的 XML 报告,但同样,覆盖率概览不会出现在构建概览页面中。
附带说明 - 我不确定 DotCoverReport 方法末尾的布尔参数是什么,无法在 FAKE 文档中找到对它的引用。我尝试切换值,但没有任何区别。
有谁知道如何让 TeamCity 获取 DotCover 报告?
找到解决方案。
在深入了解 TeamCity 文档的多层之后,我找到了这个页面:https://confluence.jetbrains.com/display/TCD9/Manually+Configuring+Reporting+Coverage
其中描述了使用服务消息将 TeamCity 指向快照的方向。
所以,最后我不需要 DotCoverReport,只需要快照:
For dotCover you should send paths to the snapshot file that is generated by the dotCover.exe cover command.
这是我得到的目标:
let artifactsDir = environVarOrDefault "ARTIFACT_DIR" (currentDirectory @@ "artifacts")
let nunitOptions nUnit3Defaults =
{ NUnit3Defaults with
TimeOut = TimeSpan.MaxValue
WorkingDir = artifactsDir }
Target "TestCoverage" (fun _ ->
let filters = ""
!! (buildDir @@ "/*.UnitTests.dll")
|> DotCoverNUnit3 (fun p ->
{ p with
Output = artifactsDir @@ "NUnitDotCover.snapshot"
Filters = filters }) nunitOptions
tracefn "##teamcity[importData type='dotNetCoverage' tool='dotcover' path='%s']" (artifactsDir @@ "NUnitDotCover.snapshot")
)
我有一个 FAKE 构建脚本,其中包含使用 DotCoverNUnit3 扩展的 DotCover 覆盖步骤:
let filters = ""
!! (buildDir @@ "/*.UnitTests.dll")
|> DotCoverNUnit3 (fun p ->
{ p with
Output = artifactsDir @@ "NUnitDotCover.snapshot"
Filters = filters }) nunitOptions
快照生成正确,但覆盖概览未出现在 TeamCity 构建中。
然后我在构建快照后尝试调用 DotCoverReport:
DotCoverReport (fun p ->
{ p with
Source = artifactsDir @@ "NUnitDotCover.snapshot"
Output = artifactsDir @@ "NUnitDotCover.xml"
ReportType = DotCoverReportType.Xml }) true
这会生成预期的 XML 报告,但同样,覆盖率概览不会出现在构建概览页面中。
附带说明 - 我不确定 DotCoverReport 方法末尾的布尔参数是什么,无法在 FAKE 文档中找到对它的引用。我尝试切换值,但没有任何区别。
有谁知道如何让 TeamCity 获取 DotCover 报告?
找到解决方案。
在深入了解 TeamCity 文档的多层之后,我找到了这个页面:https://confluence.jetbrains.com/display/TCD9/Manually+Configuring+Reporting+Coverage
其中描述了使用服务消息将 TeamCity 指向快照的方向。
所以,最后我不需要 DotCoverReport,只需要快照:
For dotCover you should send paths to the snapshot file that is generated by the dotCover.exe cover command.
这是我得到的目标:
let artifactsDir = environVarOrDefault "ARTIFACT_DIR" (currentDirectory @@ "artifacts")
let nunitOptions nUnit3Defaults =
{ NUnit3Defaults with
TimeOut = TimeSpan.MaxValue
WorkingDir = artifactsDir }
Target "TestCoverage" (fun _ ->
let filters = ""
!! (buildDir @@ "/*.UnitTests.dll")
|> DotCoverNUnit3 (fun p ->
{ p with
Output = artifactsDir @@ "NUnitDotCover.snapshot"
Filters = filters }) nunitOptions
tracefn "##teamcity[importData type='dotNetCoverage' tool='dotcover' path='%s']" (artifactsDir @@ "NUnitDotCover.snapshot")
)