如何在命令行上将运行时参数传递给 dotnet test?

Dav*_*vid 6 c# testing mstest runsettings .net-core

我在 .NET Core 项目中有一组单元测试并使用 runsettings 文件。我正在尝试设置 Azure DevOps 以对我的部署进行自动化测试。作为此过程的一部分,我需要覆盖命令行上运行设置中的参数。

我有一个包含以下部分的运行设置文件:

  <TestRunParameters>
    <Parameter name="ApiUrl" value="https://myurl..." />
  </TestRunParameters>
Run Code Online (Sandbox Code Playgroud)

我有一个静态构造函数,可以像这样保存 TestContext:

        [ClassInitialize]
        public static void TestClassInitialize(TestContext context)
        {
            TestContext = context;
        }
Run Code Online (Sandbox Code Playgroud)

我使用以下方法从 TestContext 检索设置:

        protected string GetStringSetting(string settingName)
        {
            return TestContext.Properties[settingName] as string;
        }
Run Code Online (Sandbox Code Playgroud)

当我使用选定的 runsettings 文件运行测试时,它会获取 TestContext 并且我看到 ApiUrl 条目已成功检索。

现在,我想从命令行设置此参数。我正在使用如下命令:

    dotnet test <myproject.csproj> --configuration Release -- ApiUrl=https://newurl
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出字典不包含键“ApiUrl”,这表明该设置未处理。通过阅读文档,我认为也许我需要使用 TestRunParameters.ApiUrl 完全指定设置的名称。这给了我一个 XML 错误。

从我读到的所有内容来看,我认为我这样做是正确的,无法找出问题所在。我使用的是 2.1.503 版本的工具。

有人可以指导我如何进行这项工作吗?

Ε Г*_*И О 5

您可以使用以下参数语法来执行此操作:

dotnet test <myproject.csproj> --configuration Release -- TestRunParameters.Parameter(name=\"ApiUrl\", value=\"https://newurl\")
Run Code Online (Sandbox Code Playgroud)

来源:https ://github.com/Microsoft/vstest-docs/blob/master/docs/RunSettingsArguments.md


Pes*_*ska 2

目前这是不可能实现的。检查 github 上那些已关闭的问题:

此处唯一的选择是使用新值创建另一个运行设置文件,并将其传递给dotnet test带有--settings标志的文件。