Ich möchte jeden Abend und bei jedem Commit für svn automatisierte NUnit-Tests für eine C # -Anwendung ausführen.
Kann Jenkins-CI das?
Gibt es ein Online-Tutorial oder eine Anleitung, die ein ähnliches Setup dokumentiert, das ich mir ansehen kann?
c#
continuous-integration
hudson
jenkins
Blaubeerfelder
quelle
quelle
Antworten:
Ich musste genau das tun, was Sie tun. So richte ich Jenkins ein:
Einzelner DLL-Test:
Mehrfach-DLL-Test mit NUnit-Testprojekten :
Sobald Ihr Projekt erstellt wurde, wird NUNit ausgeführt und die Ergebnisse können entweder im Dashboard (wenn Sie den Mauszeiger über das Wetterberichtsymbol bewegen) oder auf der Projektseite unter Letztes Testergebnis angezeigt werden .
Sie können den Befehl auch in Visual Studio oder als Teil Ihres lokalen Erstellungsprozesses ausführen.
Hier sind zwei Blog-Beiträge, die ich als Referenz verwendet habe. Ich habe keine gefunden, die genau meinen Anforderungen entsprach:
1-stündiger Leitfaden zur Einrichtung der kontinuierlichen Integration: Jenkins erfüllt .Net (2011)
Leitfaden zum Erstellen von .NET-Projekten mit Hudson (2008)
quelle
"C:\Program Files (x86)\NUnit 2.6.3\bin\nunit-console-x86.exe" UnitTests/UnitTests.nunit
. Hat perfekt für mich funktioniert.Wenn Sie Ihre Unit-Test-Projekte nicht fest codieren möchten, schreiben Sie besser ein Skript, um alle DLLs Ihrer Unit-Test-Projekte abzurufen. Wir machen das mit Powershell und befolgen eine spezielle Konvention für die Benennung unserer Unit-Testing-Projekte. Hier ist der Inhalt der Powershell-Datei, die unsere Unit-Tests ausführt:
Das Skript ist robust genug, dass wir es für alle Build-Jobs wiederverwenden. Wenn Ihnen der vollständige Pfad zur NUnit-Konsole nicht gefällt, können Sie diesen Speicherort jederzeit in Ihre Umgebungsvariable PATH einfügen.
Dann legen wir die Datei RunUnitTests.ps1 auf unserem Build-Server ab und verwenden diesen Batch-Befehl:
quelle
[string] $sourceDirectory = $(get-location)
und für Pfade mit Leerzeichen i der Anordnung nUnit passieren ändern musste$cFiles = $cFiles + '"' + $file + '"' + " "
Für Nunit 3 oder höher:
Erstellungsschritt (Windows-Befehlszeile)
"c:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" c:\AutomationTraining\CSharpSelenium\bin\Debug\test.dll --result=TestR.xml;format=nunit2
Nach dem Schritt für die Veröffentlichung des Nunit-Berichts wird nur die Testergebnisdatei im Jenkins-Arbeitsbereichsverzeichnis angezeigt , nicht in Ihrem Projekt: TestR.xml
Wir müssen Testergebnisse im Nunit2-Format erstellen, da das Jenkins Nunit-Plugin das Nunit3-Ergebnisformat jetzt nicht erkennt. Auch das Format der
--result=TestR.xml;format=nunit2
Optionszeichenfolge ist unterschiedlich: NICHT/xml=nunit-result.xml
quelle
Das funktioniert gut, ich habe das schon einmal eingerichtet.
Konfigurieren Sie NUnit so, dass die Ergebnisse in eine XML-Datei ausgegeben werden, und konfigurieren Sie das NUnit Jenkins-Plugin so, dass diese XML-Datei verwendet wird. Die Ergebnisse werden im Dashboard verfügbar sein.
Nun liegt es an Ihnen, wie Sie NUnit aufrufen. So haben wir es gemacht: Jenkins Job führt NAnt-Ziel aus NUnit-Testsuite.
Sie können Jenkins-Jobs so konfigurieren, dass sie beim Festschreiben ausgeführt und / oder zu einem bestimmten Zeitpunkt geplant werden.
quelle
Die Lösung von Ralph Willgoss funktioniert gut, aber ich habe zwei Dinge geändert, um sie großartig zu machen:
a) Ich habe ein NUnit-Projekt anstelle der DLL-Datei direkt verwendet. Dies erleichtert das Hinzufügen weiterer Assemblys oder das Konfigurieren des Tests in der NUnit-GUI.
b) Ich habe dem Stapel eine weitere Zeile hinzugefügt, um zu verhindern, dass der Build fehlschlägt, wenn ein Test fehlschlägt:
Das erwähnte NUnit Plugin markiert den Build automatisch als UNSTABLE , was genau das ist, was ich will, wenn ein Test fehlschlägt. Es zeigt mit einem gelben Punkt.
quelle
Ich denke, es ist besser, den Build zu scheitern, wenn er nicht erfolgreich ist, damit Sie ihn nicht bereitstellen. Mach so etwas:
Referenz: http://www.greengingerwine.com/index.php/2013/01/tip-check-errorlevel-in-your-post-build-steps-when-using-nunit/
quelle
Jenkins hat Plugins, die das unterstützen. Die genaue Konfiguration hängt stark von Ihrem Projekt-Setup ab. Es gibt spezielle Plugins für nUnit, MSBuild, nAnt usw. Schauen Sie sich zunächst die Plugins-Seite an, aber es sollte nicht besonders schwierig sein, dies herauszufinden.
quelle
Dies ist meine Lösung zum Ausführen von OpenCover mit vstest in Jenkins:
Jede Test-DLL wird in einem eigenen Prozess ausgeführt, da wir Probleme hatten, alle Test-DLLs in einem einzigen Prozess auszuführen (Probleme beim Laden von Assemblys).
quelle
Für .Net Core reicht es aus, den Build-Schritt "Shell ausführen" mit folgendem Skript hinzuzufügen:
Fügen Sie anschließend die Post-Build-Aktion "MSTest-Testergebnisbericht veröffentlichen" hinzu, um die Testergebnisse sichtbar zu machen.
Der Standardpfad für Testberichte sollte
**/*.trx
und wird alle erstellten.trx
Dateien veröffentlichen.quelle