Gol*_*ion 8 c# dependency-injection
我获取了 xunit.DependencyInjection 包并使用我的接口创建了我的构造。测试用例可以编译,但是当我运行 xunits 时,它不会执行构造函数依赖注入。
public class TestSuite{
IARepository _aRepository;
IBRepository _bRepository;
public TestSuite(IARepository aRepository, IBRepository bRepository)
{
_aRepository = aRepository;
_bRepository = bRepository;
}
}
Run Code Online (Sandbox Code Playgroud)
GitHub 建议构造函数注入是可能的: https://github.com/pengweiqhca/Xunit.DependencyInjection/tree/master/Xunit.DependencyInjection.Test
启动.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, true)
.Build();
var connectionString = configuration.GetConnectionString("A_DbCoreConnectionString");
services.AddDbContext<AContext>(options1 => options1.UseSqlServer(connectionString));
connectionString= configuration.GetConnectionString("B_DbCoreConnectionString");
services.AddDbContext<BContext>(options2 => options2.UseSqlServer(connectionString));
services.AddTransient<IARepository, ARepository>();
services.AddTransient<IBRepository, BRepository>();
}
}
Run Code Online (Sandbox Code Playgroud)
A和B存储库.cs
public class ARepository :IARepository
{
public AContext _dbContext;
public ARepository(AContext dbContext)
{
_dbContext = dbContext;
}
...
}
public class BRepository :IBRepository
{
public BContext _dbContext;
public BRepository(BContext dbContext)
{
_dbContext = dbContext;
}
...
}
Run Code Online (Sandbox Code Playgroud)
添加startup.cs代码后,我就可以让依赖注入在xunit中工作
XUnit 项目中的解决方案startup.cs 文件:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, true)
.Build();
var connectionString = configuration.GetConnectionString("A_DbCoreConnectionString");
services.AddDbContext<AContext>(options1 => options1.UseSqlServer(connectionString));
connectionString= configuration.GetConnectionString("B_DbCoreConnectionString");
services.AddDbContext<BContext>(options2 => options2.UseSqlServer(connectionString));
services.AddTransient<IARepository, ARepository>();
services.AddTransient<IBRepository, BRepository>();
}
}
Run Code Online (Sandbox Code Playgroud)