当我使用
dotnet test
运行 SpecFlow 套件时,我不想看到传递场景中的所有步骤输出。我有近 200 个场景——我只想看看哪里出了问题!
一直运行良好,直到我将这个已有 4 年历史的项目中的所有测试核心升级到最新(非预发布)版本。以前,如果一切都过去了,我只会看到摘要行。如果出现问题,我只会看到损坏的测试的步骤。我希望恢复这种行为!
这些是我当前使用的 nugets:
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="NUnit" Version="4.1.0" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.17.0" />
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
<PackageReference Include="SpecFlow" Version="3.9.74" />
<PackageReference Include="SpecFlow.NUnit" Version="3.9.74" />
<PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.9.74" />
</ItemGroup>
NUnit 注意: 如果我将所有 SpecFlow 项目降级到以前的版本 (3.3.57),我仍然会遇到问题。 看起来 NUnit 升级实际上是引入了输出更改。
1。
dotnet test
的“详细程度”参数
dotnet test --filter TestCategory!=wip koala.IntegrationTests/ -l "console;verbosity=quiet"
默认值为“最小”,它会打印我不想要的输出。这是第二安静的环境。
最安静的设置是
quiet
,但这也隐藏了所有失败输出,所以这不好。
2。添加到specflow.json文件
Per this doc,我尝试调整 SpecFlow 项目目录中的 specflow.json 文件。我添加了设置“traceSuccessfulSteps”,所以现在文件看起来像:
{
"bindingCulture": { "language" :"en-us" },
"language": { "feature": "en-us" },
"runtime": { "missingOrPendingStepsOutcome": "Error" },
"trace": { "traceSuccessfulSteps": false },
"plugins": []
}
运气不好,我仍然看到传递的输出。我没有看到任何其他可以应用的配置设置。
3.创建了一个 .runsettings 文件
根据此文档,我在 Specflow csproj 旁边创建了一个 .runsettings 文件。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration/>
<TestRunParameters/>
<NUnit>
<InternalTraceLevel>Error</InternalTraceLevel>
<Verbosity>-1</Verbosity>
</NUnit>
</RunSettings>
我发现输出没有差异。
dotnet test
控制台输出之外?无论如何我都会尝试一下。我知道在 MS Test 中,每个测试都会在命令行上显示“通过”或“失败”。假设 NUnit 执行类似的操作,将测试输出通过管道传输到 PowerShell 中的 Select-String commandlet:
dotnet test --filter TestCategory!=wip koala.IntegrationTests/ -l "console;verbosity=quiet" | Select-String 'Failed'
如果您不熟悉 PowerShell,一般模式是:
dotnet test arguments | Select-String 'foo'
将
arguments
替换为通常传递给 dotnet test
的内容。它应该过滤掉所有测试输出,除了与传递给 Select-String
的模式匹配的行。
几年前,我在开发 Ruby on Rails 应用程序时一直在做这种事情。我们有一个 Rake 任务来运行类似于
dotnet test
的测试。它显示了一系列 ******FFF*FFF*FFF***
字符,其中 *
表示测试通过,F
表示测试失败。只需在 Bash 中快速 rake test | grep 'F'
就可以减少视觉跟踪的输出。
可组合命令是我在 Linux 和 MacOS 上一直使用的强大工具。我经常在 Windows 上忘记这一点,但 PowerShell 也有一些非常强大的管道命令。