Azure Pipeline中TestRunParameter更新失败问题求助
问题:VSTest任务覆盖.runsettings参数时触发格式异常
问题详情
尝试通过Azure Pipeline的VSTest@2任务覆盖.runsettings文件中的TestRunParameters,运行流水线时触发格式异常,无法更新运行设置。
.runsettings文件内容
<TestRunParameters> <Parameter name="TestMode" value="" /> <Parameter name="RemoteServerUrl" value="" /> <Parameter name="ServiceIdentityOpenUrl" value="" /> <Parameter name="TestScope" value="" /> </TestRunParameters>
VSTest任务原配置
- task: VSTest@2 displayName: Run Integration Tests inputs: testAssemblyVer2: ${{ parameters.integrationTestDllFilter }} configuration: '$(Build.Configuration)' runSettingsFile: ${{ parameters.integrationTestRunSettingsFile }} overrideTestrunParameters: | ServiceIdentityOpenUrl=$(ServiceIdentityOpenUrl) TestScope=$(TestScope) RemoteServerUrl=$(RemoteServerUrl)
错误日志
##[error]SetupPhase.Run : Exception occurred during the updation of run settings: System.FormatException: Error encountered while overriding test run parameters. Please check the test run parameteres provided. at Microsoft.VisualStudio.TestService.SettingsManager.OverrideParamsSettingsProcessor.GetOverrideParameters(String overrdeParametersString) at Microsoft.VisualStudio.TestService.SettingsManager.OverrideParamsSettingsProcessor.UpdateSettingsWithParameters(XDocument settings) at Microsoft.VisualStudio.TestService.SettingsManager.CommonSettingsManager.UpdateCommonSettings(InputDataContract inputDataContract, SettingsModifier settingsModifier) at Microsoft.VisualStudio.TestService.SettingsManager.SettingsManager.UpdateSettingsAsRequired(InputDataContract inputDataContract) at MS.VS.TestService.VstestConsoleAdapter.SetupPhase.Run(VstestConsoleRunContext testRunContext, CancellationToken cancellationToken) ##[error]Settings updation failed with error: Error encountered while overriding test run parameters. Please check the test run parameteres provided.
解决方法
核心问题是overrideTestrunParameters的参数格式错误,VSTest要求每个覆盖参数必须以-开头,格式为 -参数名=参数值。修正后的任务配置如下:
- task: VSTest@2 displayName: Run Integration Tests inputs: testAssemblyVer2: ${{ parameters.integrationTestDllFilter }} configuration: '$(Build.Configuration)' runSettingsFile: ${{ parameters.integrationTestRunSettingsFile }} overrideTestrunParameters: | -ServiceIdentityOpenUrl=$(ServiceIdentityOpenUrl) -TestScope=$(TestScope) -RemoteServerUrl=$(RemoteServerUrl) -TestMode=$(TestMode) # 可选:如果需要覆盖TestMode参数,同样添加-前缀
额外注意事项
- 所有要覆盖的参数必须添加
-前缀,缺少前缀会直接触发格式异常 - 如果变量可能为空,可设置默认值,例如
-TestMode=$(TestMode)或-TestMode=Integration - 每个参数单独一行,避免多余空格或换行符干扰参数解析
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

