XUnit 夹具。不是创建单个实例
XUnit Fixtures. Is Not Creating A Single Instance
我正在尝试在多个测试中重复使用一个配置文件,而不是每次都重新加载该文件。当我使用这段代码时,配置文件被重复加载。不知道我误会了什么?
public class ConfigFixture
{
public static IConfiguration ConfigGet()
{
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("config.local.json")
.Build();
return config;
}
public IConfiguration Config { get => ConfigGet(); }
}
public class Tests: IClassFixture<ConfigFixture>
{
ConfigFixture conFigFixture { get; }
public Tests(ConfigFixture configFixture)
{
this.conFigFixture = configFixture;
}
[Fact]
public void Test1()
{
var container = CosmosDataAccess.Utils.Cosmos
.GetCosmosContainer(conFigFixture.Config);
}
[Fact]
public void Test2()
{
var container = CosmosDataAccess.Utils.Cosmos
.GetCosmosContainer(conFigFixture.Config);
}
}
我相信它正在创建 ConfigFixture
的单个实例 - 但每次您调用 Config
属性 时,that 正在读取文件。
我建议您改为在构造函数中填充它:
public class ConfigFixture
{
public IConfiguration Config { get; }
public ConfigFixture()
{
Config = new ConfigurationBuilder()
.AddJsonFile("config.local.json")
.Build();
}
}
我正在尝试在多个测试中重复使用一个配置文件,而不是每次都重新加载该文件。当我使用这段代码时,配置文件被重复加载。不知道我误会了什么?
public class ConfigFixture
{
public static IConfiguration ConfigGet()
{
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile("config.local.json")
.Build();
return config;
}
public IConfiguration Config { get => ConfigGet(); }
}
public class Tests: IClassFixture<ConfigFixture>
{
ConfigFixture conFigFixture { get; }
public Tests(ConfigFixture configFixture)
{
this.conFigFixture = configFixture;
}
[Fact]
public void Test1()
{
var container = CosmosDataAccess.Utils.Cosmos
.GetCosmosContainer(conFigFixture.Config);
}
[Fact]
public void Test2()
{
var container = CosmosDataAccess.Utils.Cosmos
.GetCosmosContainer(conFigFixture.Config);
}
}
我相信它正在创建 ConfigFixture
的单个实例 - 但每次您调用 Config
属性 时,that 正在读取文件。
我建议您改为在构造函数中填充它:
public class ConfigFixture
{
public IConfiguration Config { get; }
public ConfigFixture()
{
Config = new ConfigurationBuilder()
.AddJsonFile("config.local.json")
.Build();
}
}