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();
    }
}