当f#测试名称包含空格字符时,过滤dotnet test



使用dotnet test --filter选项,我如何过滤f#定义的测试名称,其中包括名称中的空格字符?

例如,使用这个单元测试:
[<Fact>]
let ``When passing A to function B it returns C``() =
Assert.True(true)

我如何运行这个特定的测试?

您可以通过使用"contains">(~)操作符(对于fqdn是隐含的)并使用逻辑-and(&)操作符替换所有空格(或其他无效字符)来解决此问题,如:

dotnet test --filter "When&passing&A&to&function&B&it&returns&C"

对于其他--filter谓词,例如。[Category="spacious testcase"]会变成:

--filter "category~spacious&category~testcase"

原因:

dotnet test命令使用test_adapters来解析过滤器表达式,截至2022年12月,来自VisualStudio(默认)和NUnit3的适配器都失败,谓词右侧有空格,nunit/NUnit3 -vs-adapter#876中报告。只保留"好的部分";rhs-value和and -ing在一起,您在选择所需的测试用例方面达到了一定的准确性。