2016-11-14 5 views
4

Ich versuche, das Kuchen-Skript zum Ausführen der Testfälle in Xunit mit dem Kuchen Skript, ich muss die Anzahl der bestanden und Anzahl fehlgeschlagener TestfälleWie erhalten und bestanden Testfall Anzahl in xunit mit Kuchen (C# make) Skript

#tool "nuget:?package=xunit.runner.console" 
var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll"); 
XUnit2(testAssemblies); 

Referenz: http://www.cakebuild.net/dsl/xunit-v2

Kann jemand bitte vorschlagen, wie die Anzahl des bestandenen zu bekommen und es versäumte, Testfälle?

+0

Beziehen Sie sich auf den Testbericht oder möchten Sie diese Werte für etwas anderes verwenden? – Nkosi

+0

@ Nkosi XUnit2 (TestAssemblies); Diese Zeile führt die Testfälle in der erwähnten DLL aus – Venkat

+0

@Nkosi Ich möchte die Zusammenfassung des Testfalllaufs erhalten wie fehlgeschlagene Zählung, bestandene Testfallzahl oder Sogar einfach ist es bestanden oder gescheitert in Codestufe – Venkat

Antwort

10

Sie müssen XUnit2Aliases​.XUnit2(IEnumerable < FilePath >, ​XUnit2Settings) + XmlPeekAliases zum Lesen der XUnit-Ausgabe verwenden.

var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll"); 
XUnit2(testAssemblies, 
    new XUnit2Settings { 
     Parallelism = ParallelismOption.All, 
     HtmlReport = false, 
     NoAppDomain = true, 
     XmlReport = true, 
     OutputDirectory = "./build" 
    }); 

Das XML-Format ist :(XUnit documentation, the example source, more information in Reflex)

<?xml version="1.0" encoding="UTF-8"?> 
<testsuite name="nosetests" tests="1" errors="1" failures="0" skip="0"> 
    <testcase classname="path_to_test_suite.TestSomething" 
       name="test_it" time="0"> 
     <error type="exceptions.TypeError" message="oops, wrong type"> 
     Traceback (most recent call last): 
     ... 
     TypeError: oops, wrong type 
     </error> 
    </testcase> 
</testsuite> 

Dann wird der folgende Code-Schnipsel sollten Sie die Informationen bringen:

var file = File("./build/report-err.xml"); 
var failuresCount = XmlPeek(file, "/testsuite/@failures"); 
var testsCount = XmlPeek(file, "/testsuite/@tests"); 
var errorsCount = XmlPeek(file, "/testsuite/@errors"); 
var skipCount = XmlPeek(file, "/testsuite/@skip"); 
1

Wie die meisten Testläufer, XUnit kehrt die Anzahl der fehlgeschlagenen Tests im Rückgabecode des Konsolenlaufers. Standardmäßig gibt Cake eine Ausnahme aus und schlägt daher den Build fehl, wenn der Rückgabecode eines Tools NICHT null ist.

Dies kann in dem XUnit Runner zu sehen Tests hier:

https://github.com/cake-build/cake/blob/08907d1a5d97b66f58c01ae82506280882dcfacc/src/Cake.Common.Tests/Unit/Tools/XUnit/XUnitRunnerTests.cs#L145

um daher zu wissen, ob:

einfach in Code-Ebene bestanden oder nicht bestanden wird

Dies ist implizit bekannt, ob der Build erfolgreich war oder nicht. Ich verwenden in der Regel eine ähnliche Strategie wie folgt aus:

Task("Tests") 
.Does(() => 
{ 
    var testAssemblies = GetFiles("./src/**/bin/Release/*.Tests.dll"); 
    XUnit2(testAssemblies, 
     new XUnit2Settings { 
      Parallelism = ParallelismOption.All, 
      HtmlReport = false, 
      NoAppDomain = true, 
      XmlReport = true, 
      OutputDirectory = "./build" 
    }); 
}) 
.ReportError(exception => 
{ 
    Information("Some Unit Tests failed..."); 
    ReportUnit("./build/report-err.xml", "./build/report-err.html"); 
}); 

Dies ist die Nutzung der Exception Handling-Fähigkeiten bei Cake:

http://cakebuild.net/docs/fundamentals/error-handling

Maßnahmen zu ergreifen, wenn ein Fehler auftritt. Außerdem verwende ich den ReportUnit alias, um den XML-Bericht in einen menschlich lesbaren HTML-Bericht zu konvertieren.

Verwandte Themen