Проект.NET Core xUnit не распознает app.config или appsettings.json

У меня есть проект.NET Core Web API, в котором уже есть файл appsettings.json, но я хочу добавить то же самое в свой соответствующий проект xUnit.

Я добавил файл appsettings.json в корень проекта файлы проекта

И содержимое appsettings.json

{
    "DatabaseType" : "MySql",
    "ConnectionStrings" : {
    "CycleTrackingDb": "connection_string_here"
    }
}

У меня проблема, когда я звоню ConfigurationManager.ConnectionStrings["CycleTrackingDB"] а также ConfigurationManager.AppSettings["DatabaseType"] возвращается как NULL или пустая строка.

Я настроил xUnit, используя раздел "Классовые приспособления" руководства xUnit https://xunit.github.io/docs/shared-context.html

В моем DatabaseFixture это

public class DatabaseFixture : IDisposable
{
    public Context Context { get; private set; }

    public DatabaseFixture()
    {
        Context = new Context(DatabaseOptionsFactory.DbContextOptions);
    }

    public void Dispose()
    {
    }
}

Все мои тестовые классы будут наследоваться от этого:

[Collection("Database collection")]
public class CycleTargetTrackerTest
{
    protected Context Context { get; }

    public CycleTargetTrackerTest()
    {
        Context = new DatabaseFixture().Context;
    }
}

DatabaseOptionsFactory - это просто статический класс, который следует читать в настройках файла appsettings.json, причем первые две строки статического конструктора будут следующими, которые будут использовать выходные данные для настройки контекста.

var databaseType = (DatabaseType)Enum.Parse(typeof(DatabaseType), Config.Configuration.Settings["DatabaseType"]);
var connectionString = ConfigurationManager.ConnectionStrings["CycleTrackingDB"];

Оба возвращаются пустыми.

РЕДАКТИРОВАТЬ Мне удалось получить его для чтения в файле appsettings.json. Я следовал этому руководству здесь: прочитайте значения json appsettings в.NET Core Test Project, но теперь я хотел бы загрузить настройки так же, как System.Configuration.ConfigurationManager, Есть ли способ сделать это?

0 ответов

Другие вопросы по тегам