c# - 当 Test Runner 中有失败的测试时,如何让 OpenCover 返回错误?

标签 c# cakebuild

使用以下 Cake 脚本时:

Task("Test-xUnit")
    .WithCriteria(() => DirectoryExists(parameters.Paths.Directories.PublishedxUnitTests))
    .Does(() =>
{
    EnsureDirectoryExists(parameters.Paths.Directories.xUnitTestResults);

    OpenCover(tool => {
        tool.XUnit2(GetFiles(parameters.Paths.Directories.PublishedxUnitTests + "/**/*.Tests.dll"), new XUnit2Settings {
            OutputDirectory = parameters.Paths.Directories.xUnitTestResults,
            XmlReport = true,
            NoAppDomain = true
        });
    },
    parameters.Paths.Files.TestCoverageOutputFilePath,
    new OpenCoverSettings()
        .WithFilter(testCoverageFilter)
        .ExcludeByAttribute(testCoverageExcludeByAttribute)
        .ExcludeByFile(testCoverageExcludeByFile));
});

即使有一些失败的测试,对 OpenCover 的调用也不会像预期的那样失败并出现异常。

如果单元测试实际上失败了,有没有办法告诉 OpenCover 失败?

最佳答案

OpenCoverSettings类包含 ReturnTargetCodeOffset属性(property)。通过将其设置为 0,您告诉 OpenCover 返回目标进程的返回码,而不是它自己的返回码。您可以找到有关此的更多信息 here .有了这个,Cake 将在测试失败时正确处理非零退出代码,并因测试失败而抛出异常。

上面的代码片段应更改为以下内容:

Task("Test-xUnit")
    .WithCriteria(() => DirectoryExists(parameters.Paths.Directories.PublishedxUnitTests))
    .Does(() =>
{
    EnsureDirectoryExists(parameters.Paths.Directories.xUnitTestResults);

    OpenCover(tool => {
        tool.XUnit2(GetFiles(parameters.Paths.Directories.PublishedxUnitTests + "/**/*.Tests.dll"), new XUnit2Settings {
            OutputDirectory = parameters.Paths.Directories.xUnitTestResults,
            XmlReport = true,
            NoAppDomain = true
        });
    },
    parameters.Paths.Files.TestCoverageOutputFilePath,
    new OpenCoverSettings { ReturnTargetCodeOffset = 0 }
        .WithFilter(testCoverageFilter)
        .ExcludeByAttribute(testCoverageExcludeByAttribute)
        .ExcludeByFile(testCoverageExcludeByFile));
});

关于c# - 当 Test Runner 中有失败的测试时,如何让 OpenCover 返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38935834/

相关文章:

.net-core - TeamCity-使用Cake脚本构建dotnet核心Web API项目

c# - 使用 Cake 将特定的 nugets 更新到所需的版本

c# - 如何使用 Cake 脚本执行 t4 模板

cakebuild - Cake PeekXml 没有 "ignore"命名空间

c# - 我如何通过使用加力来建立速度?

c# - 帮助我了解单元测试中此 FAIL 发生了什么

c# - 尝试在 C# 中获取 Twitter 个人资料信息

c# - 如何将小数四舍五入?

c# - Json.NET - 在 winforms 中反序列化和解析 json 数据

c# - 将string []从批处理文件(包含双引号“)传递到powershell脚本