Проект.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
, Есть ли способ сделать это?