教育品牌网站建设南充建网站的资料
web/
2025/10/3 6:06:29/
文章来源:
教育品牌网站建设,南充建网站的资料,济南网站优化公司哪家好,昆明网站建设-中国互联在 Xunit 中使用依赖注入Intro之前写过一篇 xunit 的依赖注入相关的文章#xff0c;但是实际使用起来不是那么方便今天介绍一个基于xunit和微软依赖注入框架的“真正”的依赖注入使用方式 ——— Xunit.DependencyInjection, 来自大师的作品#xff0c;让你在测试代码里使用依… 在 Xunit 中使用依赖注入Intro之前写过一篇 xunit 的依赖注入相关的文章但是实际使用起来不是那么方便今天介绍一个基于xunit和微软依赖注入框架的“真正”的依赖注入使用方式 ——— Xunit.DependencyInjection, 来自大师的作品让你在测试代码里使用依赖注入像 asp.net core 一样轻松使用一览包引用在 xunit 测试项目里添加对 Xunit.DependencyInjection 的引用dotnet add package Xunit.DependencyInjection
新建自己的 Startup需要实现自己的一个 Startup 在 Startup 里进行服务注册和初始化// 这里需要指定一个 assembly attribute 用来让 xunit 寻找测试入口使用自定义的测试框架
// TestFramework 第一个参数是 Startup 类的 FullName包含命名空间第二个参数是测试项目的程序集名称
[assembly: TestFramework(XUnitDependencyInjectionSample.Startup, XUnitDependencyInjectionSample)]namespace XUnitDependencyInjectionSample
{// Startup 需要继承于 DependencyInjectionTestFrameworkpublic class Startup : DependencyInjectionTestFramework{public Startup(IMessageSink messageSink) : base(messageSink){}// 重写 CreateHostBuilder 这个方法在这里进行配置注册和服务注册protected override IHostBuilder CreateHostBuilder(AssemblyName assemblyName){var hostBuilder base.CreateHostBuilder(assemblyName);hostBuilder// 注册配置.ConfigureAppConfiguration(builder {builder.AddInMemoryCollection(new Dictionarystring, string(){{UserName, Alice}}).AddJsonFile(appsettings.json);})// 注册自定义服务.ConfigureServices((context, services) {services.AddSingletonIIdGenerator, GuidIdGenerator();if (context.Configuration.GetAppSettingbool(XxxEnabled)){services.AddSingletonIUserIdProvider, EnvironmentUserIdProvider();}});return hostBuilder;}protected override void Configure(IServiceProvider provider){// 有一些测试数据需要初始化可以放在这里}}
}CreateHostBuilder 其实就是 asp.net core 里的创建一个 HostBuilder 注册配置/服务和 asp.net core 里一模一样有数据或配置需要在项目启动时初始化的可以放在 Configure 方法做有点类似于 asp.net core 里 Startup 中的 Configure 方法只是这里我们不需要配置 asp.net core 的请求管道开始在测试代码里使用依赖注入吧上面的 Startup 配置好以后就可以在测试代码里尽情使用依赖注入了来看下面的两个示例首先我们可以测试一下内置的服务就拿 IConfiguration 来测试吧再来测试一下我们自定义注册的服务IOutputHelper 是 xunit 提供的可以在执行测试的时候输出一段文本使用 Console.WriteLine 是看不到输出的哦来看一下测试结果实现原理Xunit.DependencyInjection 是一个开源项目你可以在 Github 上获取到源码 https://github.com/pengweiqhca/Xunit.DependencyInjectionXunit.DependencyInjection 重写了一套基于 Microsoft.Extensions.DependencyInjection TestFramework使得测试执行可以支持依赖注入的方式在构建测试类时可以从注册的服务中获取构造器所需要的参数在构建测试方法的时候也可以通过指定 FromServices 来从注册的服务中获取对应的服务从而实现方法参数的注入重写的 xunit 的类如下从 5.0 版本开始直接依赖于 Microsoft.Extensions.Hosting使用通用主机来构建依赖注入测试框架这样使得我们更方便集成 Configuration 更像 asp.net core 的配置更简洁More大师写的项目真心不错但是大师太低调了写的很多很实用的项目携程的阿波罗的 dotnetcore 支持就是大师一直在维护大家快去 Github follow 他吧大师最近在写一个 NetCache 的开源项目一个缓存框架感兴趣的可以去看一下给大师提点 feature 项目地址https://github.com/pengweiqhca/NetCacheReferencehttps://github.com/pengweiqhca/Xunit.DependencyInjectionhttps://github.com/WeihanLi/SamplesInPractice/tree/master/XUnitDependencyInjectionSamplehttps://github.com/pengweiqhca/NetCache
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86057.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!