Search code examples
buildnunitcakebuild

CAKE build and NUNIT3 generating empty results file


I'm using cake build and trying to upload the cake unit test results to AppVeyor, but Cake/Nunit3 are generating empty results when I run locally and I assume that is what is causing my errors on AppVeyor. In the below block, NUnitResults.xml is generated but always empty.

Task("UnitTest")
.IsDependentOn("Build")
.IsDependentOn("Setup")
.Does(() => {
    var resultsFile = artifactsDirectory + "/NUnitResults.xml";
    NUnit3("./StatusPageIo/StatusPageIo.UnitTests/bin/Release/StatusPageIo.UnitTests.dll", new NUnit3Settings()
    {
        OutputFile = resultsFile,           
    });

    if(AppVeyor.IsRunningOnAppVeyor)
    {
        AppVeyor.UploadTestResults(resultsFile, AppVeyorTestResultsType.NUnit3);
    }
});

I know the tests run because when I run build.ps1 locally I see test output, but for whatever reason the test output for my specific output file is empty. If I explicitly set NoResults to false, I get a TestResults.xml file but in the root of the project, not in the resultsFile path.


Solution

  • OutputFile is the path to save any test output which would normally be written to console.

    You're looking for Results - where you can specify a path to write the test results. Try this:

    Task("UnitTest")
    .IsDependentOn("Build")
    .IsDependentOn("Setup")
    .Does(() => {
        var resultsFile = artifactsDirectory + "/NUnitResults.xml";
        NUnit3("./StatusPageIo/StatusPageIo.UnitTests/bin/Release/StatusPageIo.UnitTests.dll", new NUnit3Settings()
        {
            Results = new[] { new NUnit3Result { FileName = resultsFile } },           
        });
    
        if(AppVeyor.IsRunningOnAppVeyor)
        {
            AppVeyor.UploadTestResults(resultsFile, AppVeyorTestResultsType.NUnit3);
        }
    });