当前位置: 首页 > news >正文

网站开发 质保金静态html网址网站导航源码

网站开发 质保金,静态html网址网站导航源码,建设网站要不要投资钱,网页设计题目在 xunit 测试项目中使用依赖注入Intro之前写过几篇 xunit 依赖注入的文章#xff0c;今天这篇文章将结合我在 .NET Conf 上的分享#xff0c;更加系统的分享一下在测试中的应用案例。之所以想分享这个话题是因为我觉得在我们开发过程中测试是非常重要的一部分#xff0c;高… 在 xunit 测试项目中使用依赖注入Intro之前写过几篇 xunit 依赖注入的文章今天这篇文章将结合我在 .NET Conf 上的分享更加系统的分享一下在测试中的应用案例。之所以想分享这个话题是因为我觉得在我们开发过程中测试是非常重要的一部分高质量项目的一个重要指标就是测试覆盖率同时依赖注入已经是一个现代化应用中不可缺少的一部分我们的 .NET Core 也是从一开始就集成了依赖注入依赖注入对于测试项目也是不能缺席的。xunit 是 .net 里目前使用的最多的测试组件Xunit.DependencyInjection 是大师写的一个 xunit 依赖注入的扩展它是基于微软的 GenericHost通用主机 来实现的使用它我们可以很轻松的实现依赖注入很好的和 .NET Core 做集成。How it works那它是如何工作的呢我们一起来看一下它的执行流程它的执行流程分为四步首先需要构建一个 Host然后启动这个 Host启动完成后执行测试用例最后终止这个 Host执行流程Host 又是如何构建的呢我们一起看一下Host 的构建也是分为四步第一步创建一个 HostBuilder大多数情况下我们不需要用这个方法使用默认的实现就好第二步Host 配置对 Host 做一些自定义配置第三步服务配置注册需要的服务第四步Configure可以做一些初始化的配置比如配置初始化以及测试数据的初始化等Host构建流程我们可以在测试项目里创建一个 Startup 类来控制 Host 的构建过程示例接着我们来看一些实际的测试示例示例分为三部分首先是一些基本用法然后是和其他组件的集成最后是一些扩展用法Get Started首先来看一下 Startup 的用法这个 Startup 和 asp.net core 里的 Startup 是很像的无论是使用方式上还是实现上都是类似的有兴趣的可以看一下源码对比一下我们来看一下使用方式通过下面的示例来感受一下如果你只需要注册服务直接在 Startup 中添加一个 ConfigureServices 方法在这个方法中注册自己需要的服务即可和 asp.net core 并无太多不同如果你需要做一些初始化的工作可以加一个 Configure 方法在这个方法中实现自己的初始化逻辑就可以了如果初始化的时候需要获取注入的服务实例直接作为方法参数就可以类似于 asp.net core 中 Configure 方法只是不需要配置 Http 请求管道如果你需要使用的配置需要使用 Configuration可以在 ConfigureHost 方法中通过 ConfigureHostConfiguration 扩展方法注册自己的配置如果需要在注册服务的时候用到配置可以在 ConfigureServices 方法中添加一个 HostBuildContext 的参数HostBuilderContext 中的 Configuration 对象就是在 ConfigureHost 中注册的配置如果需要在 Configure 方法中使用配置直接添加一个 IConfiguration 的方法参数就可以了我们再来看一下如何在测试用例中使用注入的服务一般情况下我们会直接通过构造器注入在构造方法中添加需要注入的服务即可除此之外我们还可以通过方法参数注入结合 InlineData 和 MemeberData 使用来看一下这个示例IoC/AOP Integration接着我们来看一下和其他组件的集成AutoFac 是一个很流行的 IOC 组件AspectCore 是柠檬大佬写的一个 AOP 框架我们以这两个为例子来看一下如何集成第三方的依赖注入和 AOP 组件前面我们已经提到它是基于微软的 GenericHost 实现的而 asp.net core 从 3.0 开始也是基于 GenericHost 实现的所以在 asp.net core 里怎么集成在这里也是一样的来看一下示例只需要使用对应的 ServiceProviderFactory 就可以了是不是很简单呢Test Server Integration然后我们来看一下如何和 TestServer 做集成TestServer 主要用于集成测试使用 TestServer 的好处在于它是基于内存进行交互的没有真正的 HTTP 请求和 TCP 链接会非常的高效而且也不会监听某一个端口所以不会有端口权限的问题。TestServer 的使用主要有两步首先是服务的注册可以使用 IHostBuilder 或 IWebHostBuilder 的  UseTestServer 扩展方法注册 TestServer可以使用 IHost 的 GetTestClient 扩展方法来注册和 TestServer 进行交互的 HttpClient服务注册好之后就可以在测试用例里通过注入的 HttpClient 请求 API 或页面了可以参考这个例子ExtensionsHosted Service然后我们来看一些扩展用法IHostedService 可以用来实现一些初始化的操作或者后台服务我们可以使用 IHostedService 来实现对应用的 Ready 检查应用 Ready 之后再开始执行测试用例这在有些场景下是很有用的我们在 k8s 中部署的应用一般都会有一个 HealthCheck/ReadinessCheck 的接口来供 k8s 的 liveness/readiness 探针来探测应用的状态只有应用 Ready 之后才会对外部提供服务这个示例就是一个使用 IHostedService 来实现等待应用 Ready 后再开始执行测试用例的一个 demo注意这里的等待不能在 Startup 的 Configure 方法中执行因为 Configure 的执行是在调用 Host 的 StartAsync 方法之前执行的而此时 webServer 还没有启动所以是不能获取到 TestClient 的而我们通过 HostedService 就可以在 Web Server 启动之后再执行我们的等待 Ready 逻辑ITestOutputHelperAccessor在测试中如果想要输出一个日志的话只能借助于 ITestOutputHelper 来输出直接使用 Console.Write[Line] 是看不到任何输出的ITestOutputHelper 只能在测试用例中使用在测试服务中是不能使用的Xunit.DependencyInjection 提供了一个 ITestOutputHelperAccessor 的服务类似于 IHttpContextAccessor我们可以借助它来在自定义的服务中获取 ITestOutputHelper 来输出日志这里是一个简单的示例Logging再来看一个 OutputHelperAccessor 的实际应用Xunit.DependencyInjection 提供了一个 Logging  的扩展使得我们可以把测试过程中的日志输出出来更好的帮助我们调试集成方式也比较简单可以参考这个示例引用 Xunit.DependencyInjection.Logging 之后在 LoggerFactory 中注册 XunitTestOutputLoggerProvider 即可可以看到我们的日志直接输出出来了默认的日志级别是 Information 所以 Debug 级别的日志没有输出出来有需要的话可以在注册的时候提供一个委托来控制是否要输出日志Project Template为了方便大家使用我们提供了一个项目模板可以通过一个命令就可以直接创建好一个测试项目会包含一个默认的 Startup 不再需要自己去写方法了使用的时候只需要根据需要做删减就可以了默认的 TargetFramework 使用的是 netcoreapp3.1可以通过 -f/--franework 指定自己想要使用的目标框架比如说想要生成 net 5.0 的项目只需要指定 -f net5.0 就可以了生成的内容如下所示More最后列出来了一些可能会有帮助的链接第一个是项目的源代码第二个是 PPT 中所有示例的源代码后面的是使用到的 Nuget 包。这个 xunit 扩展的代码实现是非常值得学习的有很多和 asp.net core 的实现是很像的有需要的可以去看看源码学习一下。希望我的分享对大家有所帮助大家在使用过程中有遇到任何问题都可以随时联系我或者直接在 Github 上建 issue。Referencehttps://github.com/pengweiqhca/Xunit.DependencyInjectionhttps://github.com/WeihanLi/XunitDependencyInjection.Sampleshttps://www.nuget.org/packages/Xunit.DependencyInjectionhttps://www.nuget.org/packages/Microsoft.AspNetCore.TestHosthttps://www.nuget.org/packages/Xunit.DependencyInjection.Logginghttps://www.nuget.org/packages/Xunit.DependencyInjection.Template
http://www.sadfv.cn/news/172565/

相关文章:

  • 成都网站设计报告书广州装修公司口碑最好的是哪家
  • 泰安网站建设哪家专业目录 首页 wordpress
  • 书店网站建设规划书网站建设得花多钱
  • 工业设计参考网站成都百度推广和seo优化
  • 网站建设各个模块的功能古镇企业网站建设定制
  • 多语种外贸网站建设ps做网站的时候分辨率是
  • 房产网站方案网站设计的逻辑结构
  • 用源码怎么做网站重庆市工程建设标准化网站
  • app网站开发价格手机网站制作教程视频教程
  • 获得网站管理员密码建站合同模板
  • 以个人名义可以做网站吗网站风格分类
  • 网站建设数据库做服装搭配的流行趋势网站
  • 贵阳市建设局地址网站建站公司网站论坛
  • 专注徐州网站开发再网站里做商家店铺
  • 模板网站的域名是什么意思wordpress 后台文章
  • 做推广哪个食品网站好wordpress菜单导入导出
  • 网站的友情连接怎么做企业建站系统信息
  • 免费做文字图网站贵州省建设厅住房和城乡建设官网
  • 南同网站建设软件下载网络营销顾问
  • 做网站到底怎么赚钱哪些网站是营销型网站
  • 照片分享网站开发费用用笔记本电脑能建设网站吗
  • 广州网站建设 中网科技地方网站类型
  • 装修包工头接活网站网站设计需从哪些方面考虑
  • 做公司网站的费用计入什么科目推广用哪个平台效果好
  • 台州网站seo外包黑龙江省城乡建设厅网站首页
  • 网站开发数据库问题网站简繁转换
  • 个人网站 备案 名称营销策略ppt模板
  • 苏中建设集团网站官网建设银行招聘官网网站
  • 手机建网站模板动漫制作好找工作吗
  • dw制作网站网页模板ps网站怎么做超链接