CAKE构建和NUNIT3生成空结果文件

Ric*_*fen 6 nunit build cakebuild

我正在使用蛋糕构建并尝试将蛋糕单元测试结果上传到AppVeyor,但是当我在本地运行时,Cake/Nunit3正在生成空结果,我认为这是导致我在AppVeyor上出错的原因.在下面的块中,生成NUnitResults.xml但始终为空.

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

我知道测试运行是因为当我在本地运行build.ps1时,我看到测试输出,但无论出于何种原因,我的特定输出文件的测试输出都是空的.如果我明确地将NoResults设置为false,我会得到一个TestResults.xml文件,但是在项目的根目录中,而不是在resultsFile路径中.

Chr*_*ris 12

OutputFile 是保存通常写入控制台的任何测试输出的路径.

您正在寻找Results- 您可以在其中指定编写测试结果的路径.试试这个:

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);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 太棒了 - 这节省了我很多时间,从来没有这样做过.不得不说文档不是很好,这不是最直观的配置. (2认同)