gpt4 book ai didi

c# - .net core 2.0 测试 - 如何在测试项目中存储设置?

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:40 25 4
gpt4 key购买 nike

我需要在我的 .NET Core 2.0 集成测试中存储连接字符串和其他设置(因此,这是一个带有 xUnit 的测试项目)。考虑到那些在本地和 VSTS 中运行的测试,我该如何安全地执行此操作?理想情况下,我需要将这些设置与本地环境分开并在 VSTS 上运行。

最佳答案

可以添加多个配置文件,如appsettings.json、appsettings.dev.json、appsettings.test.json,然后设置相关环境的dev值变量并为构建的相关变量设置测试值。

之后通过Token Replace替换appsettings.test.json文件中的值任务

简单步骤:

  1. 安装 Microsoft.Extensions.Configuration.Json package到你的 xUnit 测试项目
  2. 在项目中添加appsettings.json、appsettings.dev.json和appsettings.test.json配置文件

应用设置.json:

{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
"OtherSettings": {
"UserName": "name1",
"Pass": "pass1"
}
}

应用设置.dev.json:

{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=dev;Trusted_Connection=True;"
},
"OtherSettings": {
"UserName": "devname1",
"Pass": "pass1"
}
}

应用设置.test.json:

{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=#{testDev}#;Trusted_Connection=True;"
},
"OtherSettings": {
"UserName": "#{testName}#",
"Pass": "pass1"
}
}
  1. 将这些文件的复制到输出目录属性设置为如果较新则复制。4:简单的测试代码

:

            [Fact]
public void Test1()
{
var envVariable = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

Console.WriteLine($"env: {envVariable}");
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{envVariable}.json", optional: true)
.Build();
var conn = config.GetConnectionString("BloggingDatabase");
var otherSettings = config["OtherSettings:UserName"];
Console.WriteLine(conn);
Console.WriteLine(otherSettings);
}
  1. 在构建定义中添加ASPNETCORE_ENVIRONMENT(取值:test)、testDevtestName变量,可以点击锁形图标将变量类型更改为 secret
  2. 在构建任务之前添加替换 token 任务(目标文件:**\appsettings.test.json)

关于c# - .net core 2.0 测试 - 如何在测试项目中存储设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46937884/

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