我有一个.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指南https://xunit.github.io/docs/shared-context.html的Class Fixtures部分设置xUnit。
这是我的数据库修复工具
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文件中。我在这里遵循了本指南:Read appsettings json values in .NET Core Test Project,但是现在我想做的就是以与System.Configuration.ConfigurationManager
相同的方式加载设置。有办法吗?