【问题标题】:CAKE build and NUNIT3 generating empty results fileCAKE 构建和 NUNIT3 生成空结果文件
【发布时间】:2018-03-04 09:38:19
【问题描述】:

我正在使用 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 路径中。

【问题讨论】:

    标签: build nunit cakebuild


    【解决方案1】:

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

    【讨论】:

    • 太棒了 - 这为我节省了大量时间,我永远不会解决这个问题。不得不说文档不是很好,这不是最直观的配置。
    猜你喜欢
    • 2015-10-22
    • 2012-01-22
    • 2010-11-30
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2012-03-19
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多