Проект .NET Core xUnit не распознает app.config или appsettings.json - PullRequest
0 голосов
/ 28 октября 2018

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

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

И содержимое 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"];

Оба возвращают пустой.

EDIT Мне удалось его получитьчитать в файле appsettings.json.Я следовал этому руководству здесь: Чтение значений json appsettings в .NET Core Project Project , но теперь я хотел бы загрузить настройки так же, как System.Configuration.ConfigurationManager.Есть ли способ сделать это?

...