Bla*_*ell 8 c# xunit xunit.net asp.net-core
我的每个 XUnit 测试项目都有一个 appsettings.json 文件,该文件指定了一些设置。我一直使用 IConfiguration 的依赖注入来检索我的 Test Fixture 类中的这些设置。现在想起来,我完全不知道 IConfiguration 过去是如何解决的,因为 XUnit 项目中没有 Startup.cs 和 ConfigureServices 方法。但我发誓它有效。
以下内容曾经有效,但现在不起作用:
夹具:
public class TestFixture : IDisposable
{
public IConfiguration Configuration { get; set; }
public TestFixture(IConfiguration configuration)
{
Configuration = configuration;
}
}
Run Code Online (Sandbox Code Playgroud)
测试类:
public class TestCases : IClassFixture<TestFixture>
{
public TestCases(TestFixture fixture)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误如下:
消息:System.AggregateException:发生一个或多个错误。---- 类装置类型“MyProj.Tests.TestFixture”具有一个或多个未解析的构造函数参数:IConfiguration 配置 ---- 以下构造函数参数没有匹配的装置数据:TestFixture 装置
我想知道为什么我有像你这样的代码,因为文档(https://xunit.github.io/docs/shared-context)没有说任何关于在 Fixtures 中使用 DI 的事情......在我的例子中,我通过删除 DI 解决了这个问题,因为我犯了和你一样的错误。
然后我有这样的代码来为单元测试提供服务集合。
var services = new ServiceCollection();
ConfigureServices(services);
IServiceProvider serviceProvider = services.BuildServiceProvider();
// Assign shortcuts accessors to registered components
UserManager = serviceProvider.GetRequiredService<UserManager<User>>();
RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole<string>>>();
Run Code Online (Sandbox Code Playgroud)
我的 ConfigureServices() 在将服务注册到集合之前调用此代码,因此这回答了您有关 IConfiguration 的问题。请注意,我现在使用.net core 2.1,之前使用过2.0。但我仍然像你和其他评论的人一样想知道,为什么 DI 之前没有崩溃?
private static IConfiguration LoadConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
return builder.Build();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7149 次 |
| 最近记录: |