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

8
我正在使用Cake Build并尝试将Cake单元测试结果上传到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);
    }
});

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

1个回答

14

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);
    }
});

2
太棒了-这给我节省了大量的时间,我永远不会想到那个解决方法。必须说,文档并不是很好,这也不是最直观的配置。 - Rob Bird

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接