Azure Pipeline中VsTest运行NUnit测试时忽略Test Category问题求助
之前在Azure Pipelines用Visual Studio Test运行NUnit测试一切正常,接入云服务商SDK并调整环境运行设置、同时把Dotnet Appium升级到5.0版本后,出现VsTest不再按TestCategory过滤测试的问题——明明检测到了过滤规则,但实际没执行过滤。尝试在runsettings里添加包含Category的SourceFilter也没效果,日志里出现以下内容:
IsValidServiceResponse: Received None command..Service Workflow is not active
Creating run for selected test assemblies with following parameters
SourceFilter: ThisWontBeUsed TestCaseFilter: TestCategory=UserSubscription
排查及解决方法
回退Appium版本验证兼容性
Dotnet Appium 5.0大概率和NUnit测试适配器、VsTest任务存在兼容冲突。先临时回退到之前能正常工作的Appium版本,看看过滤功能能不能恢复。如果回退后正常,要么等Appium官方修复兼容问题,要么直接在项目里锁定兼容的版本。修正runsettings的过滤配置
别用SourceFilter来处理TestCategory,VsTest针对NUnit的Category过滤直接用TestCaseFilter就行,还要保证runsettings格式正确。正确的配置示例:<RunSettings> <TestFilter>TestCategory=UserSubscription</TestFilter> </RunSettings>另外在Azure Pipelines的VsTest任务里,指定这个runsettings文件,而且别在任务的「Test filter criteria」字段重复填过滤规则,避免冲突。
排查云SDK对测试上下文的干扰
接入的云SDK可能篡改了测试运行的上下文,比如修改了测试适配器配置、影响了VsTest的环境变量。试试临时移除云SDK的集成(仅测试阶段),看过滤功能是否恢复。如果恢复,就得查SDK里有没有修改测试运行时设置的代码,比如动了NUnit的TestContext或者VsTest的参数传递逻辑。更新NUnit测试适配器
确保项目里的NUnit3TestAdapter是最新稳定版,旧版本适配器可能和Appium 5.0、VsTest任务不兼容,导致过滤失效。去NuGet包管理器里更新后再重新测试。检查VsTest任务配置
在Azure Pipelines的VsTest任务里,确认「Test filter criteria」字段填的是TestCategory=UserSubscription,没有其他冲突的过滤设置。同时保证任务选的测试平台版本是最新的,旧版本VsTest平台可能不支持新的过滤逻辑。
内容的提问来源于stack exchange,提问作者HANSTKE

