TeamCity中的假(F#Make)dotCover覆盖范围

时间:2016-07-13 09:14:44

标签: f# teamcity f#-fake dotcover

我有一个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报告?

1 个答案:

答案 0 :(得分:2)

找到解决方案。

深入了解TeamCity的多层文档后,我找到了这个页面:https://confluence.jetbrains.com/display/TCD9/Manually+Configuring+Reporting+Coverage

其中介绍了如何使用服务消息将快照指向TeamCity。

所以,最后我不需要DotCoverReport,只需要快照:

  

对于dotCover,您应该将路径发送到dotCover.exe封面命令生成的快照文件。

这是我的目标:

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") 
)