【发布时间】:2019-08-28 07:00:09
【问题描述】:
我在 .NET Core 项目中有一组单元测试并使用运行设置文件。我正在尝试设置 Azure DevOps 以对我的部署进行自动化测试。作为此过程的一部分,我需要在命令行上覆盖运行设置中的参数。
我有一个包含以下部分的运行设置文件:
<TestRunParameters>
<Parameter name="ApiUrl" value="https://myurl..." />
</TestRunParameters>
我有一个像这样保存 TestContext 的静态构造函数:
[ClassInitialize]
public static void TestClassInitialize(TestContext context)
{
TestContext = context;
}
我正在使用以下方法从 TestContext 中检索设置:
protected string GetStringSetting(string settingName)
{
return TestContext.Properties[settingName] as string;
}
当我在选择运行设置文件的情况下运行测试时,它会获取 TestContext 并且我看到 ApiUrl 条目已成功检索。
现在,我想从命令行设置这个参数。我正在使用如下命令:
dotnet test <myproject.csproj> --configuration Release -- ApiUrl=https://newurl
我收到一条错误消息,指出字典不包含键“ApiUrl”,这表明设置未处理。从阅读文档中,我认为也许我需要使用 TestRunParameters.ApiUrl 完全指定设置的名称。这给了我一个 XML 错误。
从我所阅读的所有内容来看,我认为我这样做是正确的,但无法弄清楚哪里出了问题。我正在使用 2.1.503 版的工具。
有人可以指导我如何完成这项工作吗?
【问题讨论】:
-
测试运行良好,从 runsettings 文件中读取值。我遇到的问题是覆盖 Azure DevOps 框架中的这些参数。我可以使用“dotnet 测试”步骤或“Visual Studio 测试”步骤。我无法让其中任何一个使用参数替换。
标签: c# testing .net-core mstest runsettings