用途:为 .NET 测试提供跨平台与框架的筛选语法参考,帮助按名称、类、命名空间、类别或特性选择要运行的测试。
主要能力:VSTest 使用 dotnet test --filter <EXPRESSION>,语法为 <属性><运算符><值>,运算符有 =、!=、~、!~,组合符为 |(或)、&(与),可用括号分组。MSTest 支持 FullyQualifiedName、Name、ClassName、Priority、TestCategory;xUnit 支持 FullyQualifiedName、DisplayName、Traits;NUnit 支持 FullyQualifiedName、Name、Priority、TestCategory。无运算符的表达式按 FullyQualifiedName~<值> 处理。
MTP 用法:MSTest 与 NUnit 沿用相同 --filter 语法,仅传参方式不同,.NET SDK 8/9 需写成 dotnet test -- --filter "...",SDK 10+ 可直接 dotnet test --filter "..."。xUnit v3 改用专用标志,如 --filter-class、--filter-not-class、--filter-method、--filter-namespace、--filter-trait 等,并支持 --filter-query 路径语法 /<assembly>/<namespace>/<class>/<method>[trait=value]。TUnit 使用 --treenode-filter 路径语法,支持 * 通配、=、!=、&、| 等运算符。
迁移:MSTest、NUnit 及 xUnit v2 的 VSTest 筛选语法在 MTP 上一致,无需修改;xUnit v3 不支持 VSTest --filter,需按对照表转换,例如 FullyQualifiedName~ClassName 对应 --filter-class ClassName。
限制:具体可用属性与标志取决于平台和框架版本,资料未提供全部组合的完整细节。