gpt4 book ai didi

.net-core - 如何配置 Xunit dotnet 核心项目以从不同的配置(开发、测试、登台)初始化

转载 作者:行者123 更新时间:2023-12-04 01:56:36 30 4
gpt4 key购买 nike

我有一个 REST api,我想使用 dotnet core 2.0 进行集成测试(不是单元测试)。

目的是能够在本地运行这些集成测试,指向本地开发环境以及我计划从 Teamcity 参数传递的给定测试环境。

我遇到了这个post描述如何在 ASP.NET Core 中使用配置。我正在为 xunit 项目寻找类似的东西。

在 .NET Framework 世界中,我通过为环境创建单独的 json 文件来管理它,并添加了 Settings.settings文件为测试环境添加变量并在运行测试之前传递环境值。但是在 dotnet core xunit 2.0 项目中我没有看到这个 Settings.settings 文件选项。有什么解决办法的建议吗?

最佳答案

我不确定您用于测试的机制/CI/CD 管道。

也就是说,您可以使用环境变量将配置传递给您的 xUnit 测试。例如,如果您使用 Azure DevOps,则可以通过管道变量提供环境变量。我已经在 Azure DevOps 中使用 .NET Core 2.1 项目成功完成了这项工作,所以我知道这是可行的。我在让它在旧版本的 .NET Core 中工作时遇到了问题。

例如 - 在 Azure DevOps 中,您可以按如下方式解决此问题

  • 创建构建管道变量 - 例如ASPNETCORE_ENVIRONMENT
  • 创建 Visual Studio 测试任务以运行您的 xUnit 测试
  • 在您的 xUnit 项目中,只需使用 System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")

所有 .NET 核心配置类都可以通过 Microsoft.Extensions.Configuration Nuget 包

因此,虽然我没有尝试过,但您应该能够直接在您的测试项目中使用这些框架类来为您的特定测试环境配置参数 - 例如

new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true)
.AddEnvironmentVariables()
.Build();

上面显示的 .AddEnvironmentVariables() 也可以用作覆盖 appsettings.json 中默认值的替代方法

关于.net-core - 如何配置 Xunit dotnet 核心项目以从不同的配置(开发、测试、登台)初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50065991/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com