我有一个REST api,我想使用dotnet core 2.0进行集成测试(不是单元测试)。
目的是能够在本地指向本地开发环境以及我计划从Teamcity参数传递的给定测试环境中运行这些集成测试。
我遇到了这个post,描述了如何在ASP.NET核心中使用Configuration。我正在为xunit项目寻找类似的东西。
在.NET框架世界中,我通过为环境提供单独的json文件来管理它,并添加了Settings.settings文件来为测试环境添加变量,并在运行测试之前传递环境的值。但是在dotnet core xunit 2.0项目中,我没有看到这个Settings.settings文件选项。有任何建议如何解决这个问题?
答案 0 :(得分:2)
我不确定您要使用哪种机制/ CI / CD管道进行测试。
也就是说,您可以使用环境变量将配置传递给xUnit测试。例如,如果使用Azure DevOps,则可以通过管道变量来提供环境变量。我已经使用Azure DevOps中的.NET Core 2.1项目成功完成了此工作,因此我知道这是可行的。但是,在使它在旧版本的.NET Core中工作时,我遇到了问题。
例如-在Azure DevOps中,您将按照以下说明进行解决
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中的默认值
答案 1 :(得分:0)