【问题标题】:How to read .runsettings test parameter in xUnit fixture如何在 xUnit 夹具中读取 .runsettings 测试参数
【发布时间】:2019-03-04 06:12:12
【问题描述】:

我正在为 dotnet core 应用程序编写 xUnit 单元测试用例,该应用程序使用 DocumentDB (CosmosDB) 作为存储。编写单元测试以针对本地 cosmos db 模拟器执行。在 Azure DevOps 构建环境中,我设置了 Azure Cosmos DB CI/CD task,它在内部创建了一个容器来安装模拟器。但是,我无法弄清楚如何将模拟器的端点传递给 xUnit 夹具?

有没有什么方法可以让 xUnit 夹具读取 .runsettings 测试参数或参数可以通过其他来源传递?

更新

目前,我使用环境变量实现了该场景,但仍然不乐意在构建任务中使用 powershell 将连接字符串定义为环境变量,并在单元测试执行期间通过代码读取它。我在想是否有其他方法可以实现它..

下面的快照显示了当前如何将构建任务配置为实现所需的解决方法:

以及将值读取为的代码

var serviceEndpoint = Environment.GetEnvironmentVariable("CosmosDbEmulatorEndpointEnvironmentVariable");

因为,UnitTest 任务提供了传递 .runsettings/.testsettings 的选项,并带有覆盖测试运行参数的选项,因此认为使用这些选项可以实现一些目标。

【问题讨论】:

    标签: xunit runsettings


    【解决方案1】:

    这在 xUnit 中不受支持。

    请参阅 SO 答案 hereherethis github issue,表明 xUnit 不支持它。

    【讨论】:

      【解决方案2】:

      目前,我使用环境变量实现了该场景,但仍然不乐意在构建任务中使用 powershell 将连接字符串定义为环境变量,并在单元测试执行期间通过代码读取它。我在想是否有其他方法可以实现它..

      下面的快照显示了当前如何将构建任务配置为实现所需的解决方法:

      以及将值读取为的代码

      var serviceEndpoint = Environment.GetEnvironmentVariable("CosmosDbEmulatorEndpointEnvironmentVariable");
      

      因为,UnitTest 任务提供了传递 .runsettings/.testsettings 的选项,并带有覆盖测试运行参数的选项,因此认为使用这些选项可以实现一些目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-14
        • 2016-03-09
        • 1970-01-01
        • 2019-11-07
        • 2019-05-21
        • 2022-12-09
        • 1970-01-01
        相关资源
        最近更新 更多