2017-09-30 3 views
2

Ich habe vor kurzem verabschiedete das Build-Tool Cake, aber ich bin zu kämpfen bekommen dotCover Einheit Testabdeckung Berichte zeigen in Teamcity zu bekommen.Wie dotCover Abdeckung in Teamcity von Kuchen

Ich habe die folgende Aufgabe versucht:

Task("Run-Regression-Tests") 
    .IsDependentOn("Build") 
    .Does(() => 
{ 
    var resultPath = artifactsDirectory + File("results.dcvr"); 
    DotCoverCover(tool => 
     { 
      tool.NUnit3(new[] { 
       "./Foo.UnitTests/bin/" + configuration + "/Foo.UnitTests.dll", 
       "./Bar.UnitTests/bin/" + configuration + "/Bar.UnitTests.dll", 
       "./Baz.IntegrationTests/bin/" + configuration + "/Baz.IntegrationTests.dll" 
      }, new NUnit3Settings { 
       NoResults = true 
      }); 
     }, 
     resultPath, 
     new DotCoverCoverSettings() 
      .WithFilter("+:Foo.Domain")); 

    TeamCity.ImportDotCoverCoverage(resultPath); 
}); 

jedoch dies die folgende Ausgabe von Teamcity produziert:

// Output immediately after unit test success report: 

[03:01:52][Step 1/1] [JetBrains dotCover] Coverage session finished [30/09/2017 03:01:52] 
[03:01:52][Step 1/1] [JetBrains dotCover] Coverage results post-processing started [30/09/2017 03:01:52] 
[03:01:53][Step 1/1] [JetBrains dotCover] Coverage results post-processing finished [30/09/2017 03:01:53] 
[03:01:53][Step 1/1] 
[03:01:53][Step 1/1] ======================================== 
[03:01:53][Step 1/1] Create Octopus Release 
[03:01:53][Step 1/1] ======================================== 
[03:01:53][Step 1/1] Importing data from 'artifacts/results.dcvr' (7.49 MB) with 'dotNetCoverage' processor 

// After cake finishes: 

[03:02:11]Waiting for 1 service processes to complete 
[03:02:11]Processing 1 coverage report(s) 
[03:02:11]Generating coverage report by dotcover for files: [C:\TeamCity\buildAgent\work\47e2e68a6c48ce48\artifacts\results.dcvr] 
[03:02:11]Get dotCover version (1s) 
[03:02:13]Use DotCover 2016 and higher commands set 
[03:02:13]Merge dotCover reports 
[03:02:14][Merge dotCover reports] Started dotCover: C:\TeamCity\buildAgent\tools\dotCover\dotCover.exe merge C:\TeamCity\buildAgent\temp\buildTmp\dotcover4470082908956100659.xml 
[03:02:14] 
[Merge dotCover reports] Output: JetBrains dotCover Console Runner 2017.1.1. Build 108.0.20170407.130252 
Copyright (c) 2009-2017 JetBrains s.r.o. All rights reserved. 
[JetBrains dotCover] Snapshot merging started [30/09/2017 03:02:13] 
[JetBrains dotCover] Source snapshots number: 1 
[03:02:14][Merge dotCover reports] [JetBrains dotCover] Failed to merge snapshots. Set of standalone sections doesn't comply ReverseFunctionCoverageSnapshotDataDescriptor specification. Set of standalone sections doesn't comply ReverseFunctionCoverageSnapshotDataDescriptor specification 
[03:02:14] 
[Merge dotCover reports] 
[03:02:14][Merge dotCover reports] dotCover exited with code: -2 
[03:02:14][Merge dotCover reports] dotCover returned non-zero exit code. 
[03:02:14]Remove dotCover snapshot files 
[03:02:14]Generate dotCover report 
[03:02:15][Generate dotCover report] Started dotCover: C:\TeamCity\buildAgent\tools\dotCover\dotCover.exe report C:\TeamCity\buildAgent\temp\buildTmp\dotcover1750892168641886115.xml 
[03:02:15] 
[Generate dotCover report] Output: JetBrains dotCover Console Runner 2017.1.1. Build 108.0.20170407.130252 
Copyright (c) 2009-2017 JetBrains s.r.o. All rights reserved. 
[03:02:15][Generate dotCover report] [JetBrains dotCover] Report source "C:\TeamCity\buildAgent\temp\buildTmp\dotCover1103887209553630063Merge" doesn't exist. 
[03:02:15] 
[Generate dotCover report] 
[03:02:15][Generate dotCover report] dotCover exited with code: -2 
[03:02:15][Generate dotCover report] dotCover returned non-zero exit code. 
[03:02:15]Generate dotCover HTML report 
[03:02:15]Packing snapshot files 
[03:02:15][Packing snapshot files] Started dotCover: C:\TeamCity\buildAgent\tools\dotCover\dotCover.exe zip C:\TeamCity\buildAgent\temp\buildTmp\dotcover5049141835197969589.xml 
[03:02:15] 
[Packing snapshot files] Output: JetBrains dotCover Console Runner 2017.1.1. Build 108.0.20170407.130252 
Copyright (c) 2009-2017 JetBrains s.r.o. All rights reserved. 
[03:02:15][Packing snapshot files] [JetBrains dotCover] Source file doesn't exist. 

Es scheint, dass Teamcity Schnappschüsse zu verschmelzen dotCover versucht, aber ich weiß nicht Ich denke, ich sage es. Ich finde es auch merkwürdig, dass die Artefakte/results.dcvr hochgeladen werden, nachdem die Bereitstellung zu Octopus-Task gestartet wurde

Ich habe versucht, DotCoverAnalyze mit einem resultPath von "result.xml", aber TeamCity meldet, dass es eine ungültige ist Datei Format. So

, wie sammeln Sie und Import dotCover Abdeckung mit Kuchen und Teamcity?

Antwort

5

Dies ist, wie ich zur Zeit dotCover Berichterstattung Bericht an Teamcity importieren. Beachten Sie, wie ich den absoluten Pfad zu DotCover.exe Home-Verzeichnis geben, um gebündelt DotCover.exe außer Kraft setzen. Dies könnte nützlich sein, wenn es Inkompatibilität zwischen der gebündelten dotCover Version sein könnte und die, die Sie mit Kuchen verwenden (zB das in Ihrem .\tools Ordner gefunden.

Task("Run-Unit-Tests") 
    .IsDependentOn("Build") 
    .Does(() => 
{ 
    DotCoverCover((ICakeContext c) => { 
      c.NUnit3("./src/**/bin/x64/" + parameters.Configuration + "/Foo.Test.dll", 
       new NUnit3Settings 
       { 
        Results = parameters.Paths.TestResult, 
        TeamCity = parameters.IsTeamCity 
       } 
      ); 
     }, 
     parameters.Paths.CoverageResult, 
     new DotCoverCoverSettings() 
      .WithFilter("+:Foo") 
      .WithFilter("-:Foo.Test")); 
}) 
.Finally(() => 
{ 
    if(parameters.IsTeamCity) 
    { 
     TeamCity.ImportData("nunit", parameters.Paths.TestResult); 
     TeamCity.ImportDotCoverCoverage(
      parameters.Paths.CoverageResult, 
      MakeAbsolute(Directory("./tools/JetBrains.dotCover.CommandLineTools/tools"))); 
    } 
    else 
    { 
     DotCoverReport(
      parameters.Paths.CoverageResult, 
      parameters.Paths.CoverageResult.ChangeExtension("html"), 
      new DotCoverReportSettings 
      { 
       ReportType = DotCoverReportType.HTML 
      }); 
    } 
}); 
+2

Sie oben Code verbessern könnten durch die Verwendung Cake eingebautes Werkzeug Locator, um den Pfad von dotcover.exe zu erhalten. Dann wird der Code würde ungefähr so ​​aussehen 'MakeAbsolute (Context.Tools.Resolve ("dotcover.exe"). GetDirectory())' – mholo65

Verwandte Themen