有时候程序在维护的当中会注入新的接口,和类,这个时候可能会把旧的接口和类给破坏掉。如果我们有单元测试(unit test)来保证它的话,就可以减少代码开发流程中的时间。
我们可以把配置依赖注入的代码放到一个或多个类当中。 然后我们就可以对它进行单元测试了。 如下的代码中 我们就把这个配置放到了 DIConfig类当中,然后我们在UnitTest的项目当中新建一个DIConfigTest的类。
public static class DIConfig
{
public static IServiceProvider ConfigureServices()
{
var serviceCollection = new ServiceCollection();
var configuration = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", true)
.AddEnvironmentVariables()// 把环境变量也放到 Configuraiton当中
.Build();
serviceCollection.AddSingleton((IConfiguration)configuration);
serviceCollection.AddLogging(loggingBuilder =>
{
loggingBuilder.AddConfiguration(configuration.GetSection("Logging")); //配置logging的一些东西
// 下面的这行需要 Microsoft.Extensions.Logging.Console
loggingBuilder.AddConsole(); //加多个 每一个Ilooger下面就会有多个provider
});
// 注入了一个默认的ILogger
serviceCollection.AddSingleton<Microsoft.Extensions.Logging.ILogger>((it) =>
{
return it.GetService<ILoggerFactory>().CreateLogger("categtory");
});
return serviceCollection.BuildServiceProvider();
}
}
using Malema;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Xunit;
namespace TestProject1
{
public class DIConfigTest
{
[Fact]
public void DI_Should_Config_Correctly()
{
var sp = DIConfig.ConfigureServices();
var configuration = sp.GetService<ILogger<IConfiguration>>();
Assert.NotNull(configuration);
//其它的注入
}
}
}