如何在xUnit固定装置中读取.runsettings测试参数

use*_*994 5 xunit runsettings

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

xUnit固定装置是否可以通过任何方式读取.runsettings测试参数,或者可以通过其他来源传递参数?

更新资料

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

下面的快照显示了如何将构建任务当前配置为解决方法,以实现所需的目标: 在此处输入图片说明

并将代码读取为

var serviceEndpoint = Environment.GetEnvironmentVariable("CosmosDbEmulatorEndpointEnvironmentVariable");
Run Code Online (Sandbox Code Playgroud)

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

Asb*_*ørn 7

这在 xUnit 中不受支持。

请参阅此处此处的SO 答案,以及此 github 问题表明 xUnit 不支持它。


use*_*994 2

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

下面的快照显示了当前如何配置构建任务作为解决方法以实现所需的目标: 在此输入图像描述

以及将值读取为的代码

var serviceEndpoint = Environment.GetEnvironmentVariable("CosmosDbEmulatorEndpointEnvironmentVariable");
Run Code Online (Sandbox Code Playgroud)

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