Jenkins integration für dotnet test
Bin ich mit einem unit-test eines dotnet-core-Bibliothek, die mit dotnet-test. Ich habe den test auf meinem Jenkins slave wie diese.
dotnet test test/Turbine.Domain.UnitTest -xml mstest-reports/Turbine.Domain.UnitTest.xml
Den test-Bericht sieht wie folgt aus.
<?xml version="1.0" encoding="utf-8"?>
<assemblies>
<assembly name="Turbine.Domain.UnitTest.dll" environment="64-bit .NET (unknown version) [collection-per-class, parallel (8 threads)]" test-framework="xUnit.net 2.1.0.3179" run-date="2017-04-07" run-time="13:34:31" total="31" passed="31" failed="0" skipped="0" time="0.170" errors="0">
<errors />
<collection total="3" passed="3" failed="0" skipped="0" name="Test collection for Turbine.Domain.Tests.AccumulatePositionsTests" time="0.052">
<test name="Turbine.Domain.Tests.AccumulatePositionsTests.CanAccumulatePositionsByPortfolioIndex" type="Turbine.Domain.Tests.AccumulatePositionsTests" method="CanAccumulatePositionsByPortfolioIndex" time="0.0402475" result="Pass" />
<test name="Turbine.Domain.Tests.AccumulatePositionsTests.LotEventsTriggerPositionEventsImmediately" type="Turbine.Domain.Tests.AccumulatePositionsTests" method="LotEventsTriggerPositionEventsImmediately" time="0.0102925" result="Pass" />
<test name="Turbine.Domain.Tests.AccumulatePositionsTests.CanAccumulatePositionsByDefaultIndex" type="Turbine.Domain.Tests.AccumulatePositionsTests" method="CanAccumulatePositionsByDefaultIndex" time="0.0012357" result="Pass" />
</collection>
<collection total="4" passed="4" failed="0" skipped="0" name="Test collection for Turbine.Domain.Tests.Queries.AnalyticsSummaryTests" time="0.087">
<test name="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests.MarketValueHandlesNegativeAmounts" type="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests" method="MarketValueHandlesNegativeAmounts" time="0.0826806" result="Pass" />
<test name="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests.CanProduceFirmSummaryFromSnapshot" type="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests" method="CanProduceFirmSummaryFromSnapshot" time="0.0012097" result="Pass" />
<test name="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests.GrossMarketValueHandlesNegativeAmounts" type="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests" method="GrossMarketValueHandlesNegativeAmounts" time="0.0020873" result="Pass" />
<test name="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests.FirmSummaryProducesOutputOnQuote" type="Turbine.Domain.Tests.Queries.AnalyticsSummaryTests" method="FirmSummaryProducesOutputOnQuote" time="0.0010767" result="Pass" />
</collection>
etc...
Benutze ich ein archiveXUnit
block in meinem Jenkins jobs DSL zu versuchen, und Lesen Sie im Bericht.
archiveXUnit {
msTest {
pattern('**/mstest-reports/*.xml')
}
}
Jenkins scheint zu sehen, den Bericht.
Aufnahme-test-Ergebnisse
[xUnit] [INFO] - Starting to record.
[xUnit] [INFO] - Processing MSTest-Version N/A (default)
[xUnit] [INFO] - [MSTest-Version N/A (default)] - 1 test report file(s) were found with the pattern '**/mstest-reports/*.xml' relative to '/home/jenkins/workspace/routing/Turbine/build_Turbine' for the testing framework 'MSTest-Version N/A (default)'.
[xUnit] [INFO] - Check 'Failed Tests' threshold.
[xUnit] [INFO] - Check 'Skipped Tests' threshold.
[xUnit] [INFO] - Setting the build status to SUCCESS
[xUnit] [INFO] - Stopping recording.
Aber es ist nicht die Analyse und Berücksichtigung der Ergebnisse in den Bericht. Ich sehe nicht den Testbericht auf meinem Jenkins build-dashboard.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie das folgende Pipeline-code ausführen und veröffentlichen die dotnet-core-test Ergebnisse:
Hochgeladen habe ich einige Beispiele, die ich aus meinem GitHub für jedermann zu bedienen und zu tragen, fühlen Sie sich frei, um einen Blick zu nehmen:
https://github.com/avrum/JenkinsFileFor.NETCore
Diese pipline jenkinsfile fügt diese pipline Vorlage zu dem build:
So, ich bin mit xUnit und die trx-format, das funktioniert glücklicherweise:
Tests:
Jedoch mit dieser gibt mir folgende Ausgabe:
Und so das kopieren der xunit-Läufer manuell in den Ordner bin von dem test-Projekt behebt dieses (ja, das ist der hacky):
Ich dann hinzufügen Veröffentlichen xUnit-tests Schritt wie folgt:
Tests dann gemeldet wirst richtig auf das Projekt, und erstellen Sie Seiten.
Dank Matt und kiml42!
Bin ich mit dotnet-core 2.2 mit "MSpec" als mein test-framework, und brauchen nicht die hacky kopieren und verwenden können, die trx-format (https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test?tabs=netcore21#examples).
Den test-Befehl, den ich verwenden ist:
dotnet test --logger "trx;LogFileName=UnitTests.trx"
, die führt tests in jedem der test-Projekte und schreibt die Ergebnisse in{ProjectFolder}/TestResults/UnitTests.trx
Ich habe die MSTest plugin installiert, das die Umwandlung von trx in junit-format (https://wiki.jenkins.io/display/JENKINS/MSTest+Plugin).
Ich auch den link zu den test-Ergebnissen mit einem post/immer/Schritt block wie folgt:
Habe ich die folgende deklarative Jenkinsfile pipeline: