如何在xUnit fixture中读取.runsettings测试参数

13

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

是否有任何方法可以通过xUnit fixture读取.runsettings测试参数或通过其他来源传递参数?

更新

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

下面的快照显示了当前配置的构建任务,以实现所需的解决方法:enter image description here

以及读取值的代码:

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

由于UnitTest任务提供了使用.runsettings/.testsettings选项的功能,并提供覆盖测试运行参数的选项,所以我认为可以使用这些选项来实现这个目的。

2个回答

9

在xUnit中不支持此功能。

请参阅此处此处的SO答案,以及此Github问题,表明这不是xUnit将要支持的内容。


2
目前,我已经使用环境变量实现了这种情况,但仍然不满意使用PowerShell在构建任务中定义连接字符串作为环境变量,并在单元测试执行期间通过代码读取它。我在想是否有另一种方法可以实现它。
以下快照显示当前如何配置构建任务以实现所需的解决方法: enter image description here 读取该值的代码如下:
var serviceEndpoint = Environment.GetEnvironmentVariable("CosmosDbEmulatorEndpointEnvironmentVariable");

由于UnitTest任务提供了使用.runsettings/.testsettings传递选项并覆盖测试运行参数的选项,因此考虑是否可以使用这些选项来实现该功能。

“Original Answer”翻译成中文为“最初的回答”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接