TeamCity的虚假(F#Make)dotCover报道
我有一个伪构建脚本,其中包含使用DotCoverNUnit3扩展的DotCoverCoverCoverage步骤:TeamCity的虚假(F#Make)dotCover报道,f#,teamcity,f#-fake,dotcover,F#,Teamcity,F# Fake,Dotcover,我有一个伪构建脚本,其中包含使用DotCoverNUnit3扩展的DotCoverCoverCoverage步骤: let filters = "" !! (buildDir @@ "/*.UnitTests.dll") |> DotCoverNUnit3 (fun p -> { p with Output = artifactsDir @@ "NUnitDotCover.snapshot" Filters
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方法末尾的布尔参数是什么,在假文档中找不到对它的引用。我试着换了这个值,但没什么不同
有人知道如何让TeamCity获取DotCover报告吗?找到了解决方案
在深入研究TeamCity的多层文档后,我发现了以下页面:
它描述了如何使用服务消息将TeamCity指向快照的方向
因此,最终我不需要DotCoverReport,只需要快照:
DotCoverReport (fun p ->
{ p with
Source = artifactsDir @@ "NUnitDotCover.snapshot"
Output = artifactsDir @@ "NUnitDotCover.xml"
ReportType = DotCoverReportType.Xml }) true
对于dotCover,您应该向dotCover.exe cover命令生成的快照文件发送路径
这是我的最终目标:
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")
)
从这里,我可以看出,问题的关键是如果任务失败,是否会导致整个构建失败。该参数没有名称,因为
DotCoverReport
返回当前函数。它可能应该显式地接收并传递一个命名参数,而不是用于文档。啊,我明白了,我想,所以bool是buildParamsAndExecute
的failBuild
参数,我试着使用它,但它给出了一个错误,即“nunitOptions未定义”@johnfernandes我认为dan ellis必须在外部范围内声明nunitOptions。如果您没有可设置的选项,您可以将nunitOptions
替换为id
@joachim chapman correct,@johnfernandes我已经用定义nunitOptions
什么是path='%s'的代码更新了我的答案?@KMittalpath='%s'
是提供给tracefn
的格式字符串的一部分,%s
被快照文件路径替换,快照文件路径是tracefn
函数调用的第二个参数。把它想象成一个字符串替换,我们用快照文件的路径替换%s
,tracefn
进行字符串替换,然后将结果字符串写入命令行。