不借助vstest.console,使用Xunit.runner按标签筛选Specflow测试
解决方案
首先明确:xunit.runner.json本身并不支持配置测试筛选规则,这个文件的作用是控制测试运行的基础行为(比如并行执行、输出格式、是否显示跳过的测试等),预设筛选条件不在它的配置范围内。
针对你的需求,有几个替代方案可以实现类似效果:
1. 在项目文件中预设测试筛选器
直接在你的测试项目的.csproj文件里添加MSBuild属性,指定默认的测试筛选条件。这样每次执行dotnet test时,会自动应用这个筛选:
<PropertyGroup> <!-- 预设筛选Smoke标签的测试,可替换为Category=Regression --> <TestFilter>Category=Smoke</TestFilter> </PropertyGroup>
如果需要临时跑其他标签的测试,只需要在命令行里覆盖这个参数:dotnet test --filter Category=Regression
2. 封装命令到脚本文件
创建一个简单的脚本(Windows用.bat,Linux/macOS用.sh),把带筛选的命令封装进去,每次运行脚本即可:
- Windows脚本(run-smoke-tests.bat):
dotnet test --filter Category=Smoke
- Linux/macOS脚本(run-smoke-tests.sh):
#!/bin/bash dotnet test --filter Category=Smoke
需要执行Regression测试时,复制一份脚本修改筛选条件即可。
3. 利用Visual Studio测试探索器(仅IDE场景)
如果是在Visual Studio里运行测试,可以在测试探索器的搜索框输入Category:Smoke,然后点击"保存筛选器",之后直接选择保存好的筛选器就能快速运行对应标签的测试。
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

