Like most test runners, XUnit returns the number of failed tests in the return code from the console runner. Out of the box, Cake throws an exception, and therefore fails the build, when the return code of a tool is NOT zero.
This can be seen in the XUnit Runner Tests here:
https://github.com/cake-build/cake/blob/08907d1a5d97b66f58c01ae82506280882dcfacc/src/Cake.Common.Tests/Unit/Tools/XUnit/XUnitRunnerTests.cs#L145
Therefore, in order to know whether:
simply it is passed or failed in code level
This is known implicitly by whether or not the build succeeded or not. I typically use a strategy similar to this:
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");
});
This is making use of the Exception Handling capabilities in Cake:
http://cakebuild.net/docs/fundamentals/error-handling
To take action when an error occurs. On top of that, I am then using the ReportUnit alias to convert the XML Report into a human readable HTML Report.