Azure Pipeline中VSTest@2任务NUnit3.TestAdapter加载警告求助
问题
最近未对测试解决方案做任何直接修改,但Azure Pipeline中的VSTest@2任务执行时开始出现以下警告:
##[warning]DiscoveryMessage : Failed to load extensions from file 'D:\a\1\s\src\...\NUnit3.TestAdapter.dll'. Please use /diag for more information.
该警告未破坏测试发现或执行阶段,但会干扰警告面板,可能导致遗漏更重要的警告。我已在任务定义中添加排除规则,理论上VSTest任务不应尝试从TestAdapter中发现测试,附上任务配置:
- task: VSTest@2 inputs: testSelector: 'testAssemblies' testAssemblyVer2: | **\*.Tests.dll !**\*TestAdapter.dll !**\NUnit3.TestAdapter.dll !**\obj\** searchFolder: '$(System.DefaultWorkingDirectory)' distributionBatchType: basedOnExecutionTime codeCoverageEnabled: true
可能的解决方法
- 排查适配器扫描范围:你设置的排除规则只针对测试程序集,但VSTest会自动扫描指定目录下的测试适配器文件(比如
packages目录、输出目录里的适配器)。可以尝试将NUnit3.TestAdapter.dll移到测试程序集所在目录之外,或者缩小searchFolder的范围,避免包含适配器文件。 - 添加适配器禁用参数:直接在VSTest任务中添加控制台参数,强制禁用自动加载适配器。修改任务配置,在
otherConsoleOptions中加入/UseVsixExtensions:false /TestAdapterPath:"",这样VSTest就不会尝试加载NUnit3.TestAdapter.dll了:
- task: VSTest@2 inputs: testSelector: 'testAssemblies' testAssemblyVer2: | **\*.Tests.dll !**\*TestAdapter.dll !**\NUnit3.TestAdapter.dll !**\obj\** searchFolder: '$(System.DefaultWorkingDirectory)' distributionBatchType: basedOnExecutionTime codeCoverageEnabled: true otherConsoleOptions: '/UseVsixExtensions:false /TestAdapterPath:""'
- 更新/降级适配器版本:该警告可能是NUnit适配器与VSTest任务版本不兼容导致的加载失败。尝试将
NUnit3.TestAdapterNuGet包升级到最新稳定版,或者降级到与当前VSTest任务兼容的版本。 - 启用诊断日志定位根因:按照警告提示,在
otherConsoleOptions中加入/diag:test_diag_log.txt,执行任务后下载生成的日志文件,里面会包含适配器加载失败的详细信息,能帮你精准找到问题所在。
内容的提问来源于stack exchange,提问作者cyman1998
相关产品推荐
相关产品推荐

