myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns
» Datenschutzerklärung
» Impressum

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Entwicklungs- und Laufzeitumgebung (Infrastruktur) » Azure Devops: Wie TRX File in XML konvertieren?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Azure Devops: Wie TRX File in XML konvertieren?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland


dr4g0n76 ist offline

Azure Devops: Wie TRX File in XML konvertieren?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das WARUM
Wir brauchen eine Code Coverage und einen Test-Report, die vom TRX file abgeleitet werden sollen.
Damit wir später den Test-Report unterschreiben lassen können und alles seinen Gang laut Zertifizierung geht.

Dabei sind Probleme aufgetreten.

Ausgangssituation:

Ich habe mit diesem Befehl die Vorbereitung für eine Code-Coverage mit einem TestProjekt gemacht, um zu sehen, ob das so funktionieren würde:

Code:
1:
dotnet test TestProject.csproj --logger "trx;LogFileName=TestResults.trx" --logger "xunit;LogFileName=testResults.xml" /p:CollectCoverage=true /p:CoverletOutput=BuildReports\Coverage\ /p:CoverletOutputFormat=cobertura /p:Exclude="[xunit.*]*

Mit diesem Parameter bekomme ich eben die Fehlermeldung, dass kein XUNIT gefunden wird, aufgrund des Bugs in Visual Studio.

Was jetzt allerdings passiert ist, dass XUnit nicht gefunden wird, aufgrund eines Bugs in Visual Studio.

Mit einem Test-Projekte das ich LOKAL laufen lassen konnte (nicht das produktive) funktioniert es.

Workaround

Mein Workaround soweit ist: ich lasse den Teil mit

Code:
1:
--logger "xunit;LogFileName=testResults.xml"

der fehltschlägt weg.
Dann habe ich eben nur ein TRX file.

Code:
1:
dotnet test TestProject.csproj --logger "trx;LogFileName=TestResults.trx" --logger "xunit;LogFileName=testResults.xml" /p:CollectCoverage=true /p:CoverletOutput=BuildReports\Coverage\ /p:CoverletOutputFormat=cobertura /p:Exclude="[xunit.*]*

Benötigte Lösung

Was ich jetzt allerdings brauche ist eben ein Mechanismus der mir per Console oder Task (muss in Azure Devops möglich sein) das TRX file in XML umwandelt.

Oder eben ein Mechanismus der in Azure Devops direkt ein Report vom XML file machen kann.

Weiss jemand wie das geht oder hatte schon dasselbe Problem?

Oder ist das Ganze noch viel einfacher und ich suche nach der falschen Stelle?

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von dr4g0n76 am 28.03.2019 16:53.

28.03.2019 16:50 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.645
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Was tust Du da...? verwundert

Die dotnet cli in Azure DevOps erzeugt von Haus aus ein TRX File (auch mit XUnit, ausser Du hast eine uralte CLI Version).
Die Code Coverage und die Testergebnisse werden automatisch gepublished und hängen anschließend dem Build an inkl. Reporting.

Das Kommentar mit Visual Studio habe einen Bug ist mir nicht klar.
Du buildest hier offensichtlich .NET Core und dazu braucht man keinen VS Task in Azure DevOps.
VS brauchst Du nur für .NET Framework oder Mixed Solutions. Dann darfst Du aber nirgends dotnet cli Commands verwenden.

Hier paar YAML Templates von mir, die in quasi allen meinen/unseren Projekten Verwendung finden (inkl XUnit, Code Coverage und TEst Reporting - aber keine SonarQube Coverage).
 https://github.com/BenjaminAbt/AzureDevOps-YamlBuildSamples

Oder geht es Dir um einen zusätzlichen Export? Das geht aus Deinem Beitrag leider null raus.
Wenn ja: die Testergebnisse lassen sich via REST API laden ( https://docs.microsoft.com/en-us/rest/ap...devops-rest-5.0)
Das ist auch der empfohlene Weg von Azure DevOps für Exports.

Zitat:
Damit wir später den Test-Report unterschreiben lassen können und alles seinen Gang laut Zertifizierung geht.

Interessehalber: Was soll das denn für eine Zertifizierung, die eine manuelle Unterschrift erfordert und für die nicht Azure DevOps Gates des Release Managements verwendet werden kann?

Gates sind genau für sowas wie Freigaben gedacht.

Zitat von https://docs.microsoft.com/en-us/azure/devops/pipelines/release/approvals/gates?view=azure-devops:
....
Seek approvals outside Azure Pipelines. Notify non-Azure Pipelines users such as legal approval departments, auditors, or IT managers about a deployment by integrating with approval collaboration systems such as Microsoft Teams or Slack, and waiting for the approval to complete.
....

Und das funktioniert problemlos mit Signaturdiensten für die digitale Freigabe via Signaturen.
Eine externe Unterschrift ist ja im Prozess nicht sicher abbildbar; und nicht-sichere Prozessschritte dürfte prinzipiell einer Pipeline Zertifizierung widersprüchlich sein.
28.03.2019 19:54 Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
Die dotnet cli in Azure DevOps erzeugt von Haus aus ein TRX File (auch mit XUnit, ausser Du hast eine uralte CLI Version).
Die Code Coverage und die Testergebnisse werden automatisch gepublished und hängen anschließend dem Build an inkl. Reporting.

Das stimmt und das Kommando, dass ich integriert habe soll eine Basis für eine Code-Coverage Report erstellen. Anscheinend geht das nur mit dieser Command-Line,
zumindest habe ich noch nicht so viel Erfahrung, dass ich wüsste wie ich es besser mache, solange ich Tasks verwende und nicht die YAML Scripts direkt.

Zitat:
Das Kommentar mit Visual Studio habe einen Bug ist mir nicht klar.
Du buildest hier offensichtlich .NET Core und dazu braucht man keinen VS Task in Azure DevOps.
VS brauchst Du nur für .NET Framework oder Mixed Solutions. Dann darfst Du aber nirgends dotnet cli Commands verwenden.

Die Leute, die bei uns in der Entwicklung arbeiten haben eine Mixed Solution kreiert.
Enthält also .NET Framework und .NET Core Projekte.
NuGet Referenzen werden jetzt nicht richtig aufgelöst, trotzdem buildet das Projekt auch bei mir und jemand anderem.

Nur, im Visual Studio ist auch ganz klar zu sehen, dass etwas nicht stimmt:
Die NuGet Pakete haben gelbe Warndreiecke.
Die Aussage mit dem Bug bezieht sich darauf, dass u.a. keine Fehlermeldung erscheint, warum die Referenzen denn nicht gefunden werden.

Plus, dass jeder einzelne unterschiedliche Restore Versuch (zumindest die, die wir kennen und versucht haben) fehlgeschlagen ist.
Ergebnis: auch nach dem Schliessen von Visual Studio und der Solution und Restart:
Problem besteht weiterhin.

Zitat:
Hier paar YAML Templates von mir, die in quasi allen meinen/unseren Projekten Verwendung finden (inkl XUnit, Code Coverage und TEst Reporting - aber keine SonarQube Coverage).
 https://github.com/BenjaminAbt/AzureDevOps-YamlBuildSamples

Danke, Dir. :-) Das ist garantiert sehr hilfreich und hilft mir bestimmt ebenfalls zu sehen, wo ich etwas zu umständlich gemacht habe oder noch ganz einfach verbessern kann.
Bin hier noch viel am (Dazu-~)Lernen.

Zitat:
Oder geht es Dir um einen zusätzlichen Export? Das geht aus Deinem Beitrag leider null raus.
Wenn ja: die Testergebnisse lassen sich via REST API laden (  https://docs.microsoft.com/en-us/rest/ap...devops-rest-5.0)
Das ist auch der empfohlene Weg von Azure DevOps für Exports.

Man hatte sich vorgestellt, dass wir eben diesen Output von diesem Tool verwenden können (Extension in Azure Devops):

 https://marketplace.visualstudio.com/ite...reportgenerator
(s. auch angehängtes Bild)

Dafür hatte ich die Kommandozeile gemacht.
Und soweit ich gestern Abend noch herausgefunden habe, weil die NuGet Packages Fehler haben und die Referenzen nicht richtig aufgelöst werden,
buildet das Projekt zwar noch in Visual Studio,
nicht aber wenn ich die Kommando-Zeile verwende, die ich gepostet habe.

Nur noch mal zur Erklärung, nicht weil ich auf dem Pfad bleiben möchte:

und deshalb findet er eben Xunit nicht. Lasse ich die Zeile mit dem XML weg, funktioniert alles in der Kommandozeile.

Versteh mich nicht falsch, wenn es anders einfacher funktioniert,
bin ich jederzeit bereit davon abzurücken, wie ich es bisher versucht habe.
Mir geht es nur um eine Lösung, nicht um Biegen und Brechen meinen Weg zu versuchen,

deshalb nochmal danke für Deinen Input.

Zitat:
Interessehalber: Was soll das denn für eine Zertifizierung, die eine manuelle Unterschrift erfordert und für die nicht Azure DevOps Gates des Release Managements verwendet werden kann?

[QUOTE
Damit wir später den Test-Report unterschreiben lassen können und alles seinen Gang laut Zertifizierung geht.
[/QUOTE]
Finde ich selbst auch etwas gewöhnungsbedürftig, soweit ich das bisher verstehe ist das so. Medical Bereich.

Zitat:
Gates sind genau für sowas wie Freigaben gedacht.

Zitat von  https://docs.microsoft.com/en-us/azure/d...ew=azure-devops:
....
Seek approvals outside Azure Pipelines. Notify non-Azure Pipelines users such as legal approval departments, auditors, or IT managers about a deployment by integrating with approval collaboration systems such as Microsoft Teams or Slack, and waiting for the approval to complete.
....

Und das funktioniert problemlos mit Signaturdiensten für die digitale Freigabe via Signaturen.
Eine externe Unterschrift ist ja im Prozess nicht sicher abbildbar; und nicht-sichere Prozessschritte dürfte prinzipiell einer Pipeline Zertifizierung widersprüchlich sein.

Nicht die Pipeline wird zertifiziert. :-)
Sondern die Prozesse hier müssen einen gewissen Ablauf haben.

Ich hoffe, dass macht es etwas klarer.

Ich denke sobald die XUnit-Referenzen gefunden werden,
funktioniert auch alles wie gedacht und ich kann die wichtigen Stellen von Deiner Pipeline übernehmen.

Das hat sehr geholfen.
29.03.2019 10:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.645
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
--logger "xunit;LogFileName=testResults.xml"

Probier mal LogFilePath statt LogFileName.
LogFileName dürfte VSTest sein.

Darüber hinaus sind TRX Dateien XML Dateien.

Zitat von dr4g0n76:
solange ich Tasks verwende und nicht die YAML Scripts direkt.

YAML is first citizen, aber Tasks machen im Hintergrund das identische.

Zitat von dr4g0n76:
Die Leute, die bei uns in der Entwicklung arbeiten haben eine Mixed Solution kreiert.
Enthält also .NET Framework und .NET Core Projekte.

NuGet Referenzen werden jetzt nicht richtig aufgelöst, trotzdem buildet das Projekt auch bei mir und jemand anderem.

In diesem Fall muss sowohl der Restore wie auch der Build gegen die Solution laufen und nicht gegen einzelne Projekte, was Dein Code zeigt.

YAML NuGet Task: restoreSolution: '**/*.sln'
Und auch der Build muss dann via VS erfolgen, nicht via dotnet cli.

Bin in den letzten Changes nicht 100% drin, aber glaube nicht, dass es derzeit anders sauber funktioniert.

Zitat von dr4g0n76:
Sondern die Prozesse hier müssen einen gewissen Ablauf haben.

Das dachte ich mir. zB ISO 9001 beschreibt, dass die "definierten Prozesse eingehalten werden müssen", damit die Qualitätssicherung eingehalten wird.
Manche verstehen darunter (und das sind die meisten), dass die Prozesse, die man sich selbst 1596 auferlegt haben, eingehalten werden müssen - das ist falsch.
Im Jahr 2019 darf man gerne die Prozesse aus 1596 selbst digitalisieren, damit diese zB. Papierlos eingehalten werden.
Damit wird ISO 9001 immer noch erfüllt.

Ich weiß nicht genau welcher Zertifizierung ihr unterliegt oder ihr haben wollt (evlt. FDA, weil Medical?) aber der Medical Bereich ist eigentlich nach der Landwirtschaft (kein Scherz!) mit der meist durchdigitalisierte Bereich den es gibt.
Würde mich wundern, dass es hier eine Zertifizierung gibt, die wirklich eine Unterschrift auf Papier vorschreibt und der die gesamte Chain nicht digital sein darf.

Dann könntest Du Dir den ganzen manuellen Käse sparen und eben Gates verwenden.
Solltest ihr aber bei dem PDF (oder HTML Export) Thema bleiben wollen, dann würde ich an Deiner Stelle SonarQube verwenden (verwenden wir auch).
Auch nDepend hat einen super Report (Beispiel von NodaTime:  https://www.ndepend.com/Sample-Reports/O...eport.html#Main).
29.03.2019 11:32 Beiträge des Benutzers | zu Buddylist hinzufügen
gfoidl gfoidl ist männlich
myCSharp.de-Team

avatar-2894.jpg


Dabei seit: 07.06.2009
Beiträge: 6.528
Entwicklungsumgebung: VS 201[27]
Herkunft: Waidring


gfoidl ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo dr4g0n76,

Zitat:
das TRX file in XML umwandelt.

Wie Abt schon schreibt, ist trx auch xml ;-)
 https://www.nuget.org/packages/trx2junit/ ist vllt. ein passendes dotnet-Tool dazu.

mfG Gü
05.04.2019 12:32 Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.645
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Übrigens, so machen wir das:  .NET CORE Code Coverage done right
27.04.2019 17:43 Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@Gfoidl:

Zitat:
Wie Abt schon schreibt, ist trx auch xml ;-)

stimmt absolut, hätte mich damals genauer ausdrücken sollen, ich hätte ein anderes XML-Format gebraucht, mit der Kommandozeile, die ich aufgerufen hatte. Das hat sich jetzt aber vorerst gelöst.

Danke nochmals für alle diese Antworten. Und ich werde auf jeden Fall darauf zurückkommen.

@Abt:

Zitat:
 Übrigens, so machen wir das: .NET CORE Code Coverage done right

Das Löst direkt einer meiner nächsten Aufgaben teilweise mit. Danke dafür.

P.S.: Wenn sich das Thema demnächst lösen sollte, dann werde ich dem Titel ein [gelöst] mitbeifügen. :-)
06.05.2019 16:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.05.2019 13:48