返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >asp.net core 使用 TestServer 来做集成测试的方法
  • 319
分享到

asp.net core 使用 TestServer 来做集成测试的方法

netASP.NET集成测试方法core测试ASP 2022-06-07 22:06:42 319人浏览 安东尼
摘要

Intro 之前我的项目里的集成测试是随机一个端口,每次都真实的启动一个 WEBServer,之前也有看到过微软文档上 TestServer 的介绍,当时没仔细看过以为差不多就

Intro

之前我的项目里的集成测试是随机一个端口,每次都真实的启动一个 WEBServer,之前也有看到过微软文档上

TestServer
的介绍,当时没仔细看过以为差不多就没用,一直是启动了一个真正的 WebServer 去跑集成测试的,上次分享
Xunit.DependencyInjection
改造测试项目的时候,写的烂代码被大师看到了之后, 大师建议用
TestServer
来做集成测试,使用
TestServer
不会真正的占用端口号,不会出现权限问题,于是扒了扒 TestServer 的源码,并用
TestServer
改进了集成测试项目,感谢大师[献花鲜花]~~

Sample

之前的集成测试监听了一个端口号,使用了一个真实的 WebServer,下面改成使用

TestServer

TestServer
现在是在
Microsoft.Aspnetcore.TestHost
这个 Nuget 包中,引用这个包就可以使用了

在服务注册的时候调用

UseTestServer
这一扩展方法就可以注入
TestServer
了,集成测试一般会用
HttpClient
来请求服务器端的 api 地址或页面,
TestServer
提供了一个方便的
CreateClient
的方法可以很方便的创建一个用来请求
TestServer
HttpClient
,微软也提供了一些比较方便的扩展方法,可以使用
IHost
GetTestClient
扩展方法来获取
HttpClient

改成使用

TestServer
很简单,引用 nuget 包
Microsoft.AspNetCore.TestHost
,变更对比如下:

源码概览

TestServer 在启动的时候并没有监听端口,可以参考源码

IServer
Start

TestServer 通过

CreateClient
方法来创建调用 TestServer 接口的 HttpClient

通过上面的代码可以看的出来核心代码是在

ClientHandler
中定义的,源码有点多,详细可以直接看源码 https://GitHub.com/dotnet/aspnetcore/blob/v5.0.0/src/Hosting/TestHost/src/ClientHandler.cs

ClientHandler
重写了 HttpClientHandler 的
SendAsync
方法,使得请求直接拦截掉,不会真正的发生 Http 请求,实际的请求过程首先将 Http 请求的信息转换成 HttpRquestFeature 然后直接交给 TestServer 处理,其实也就是直接交给 ASP.net core 的请求管道去处理,请求处理结束之后,获取 HttpContext 响应,获取 HttpResponseFeature 然后转换成 HttpClient 需要的 HttpResponseMessage.

More

TestServer
不仅仅可以支持 HTTP 请求的处理,还支持 websocket 的处理,WebSocket 的集成测试也可以使用
TestServer
来处理。

你如果还是比较怀疑是否真的没有 HTTP 请求,可以用 Fildder 之类的 HTTP 抓包工具监控在跑测试的期间是否真的有 HTTP 请求,如果是真正的 WebServer 会有 HTTP 请求,TestServer 不会有 HTTP 请求。

https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-5.0
https://github.com/dotnet/aspnetcore/tree/v5.0.0/src/Hosting/TestHost/src
https://github.com/dotnet/aspnetcore/tree/v5.0.0/src/Hosting/TestHost/src/TestServer.cs
https://github.com/dotnet/aspnetcore/blob/v5.0.0/src/Hosting/TestHost/src/ClientHandler.cs#L58
https://github.com/OpenReservation/ReservationServer/blob/3.1.0/OpenReservation.API.Test/Startup.cs#L26
https://github.com/OpenReservation/ReservationServer/commit/e683065bf76e3c51688238c382b2c1f0c8028e7d

到此这篇关于asp.net core 使用 TestServer 来做集成测试的文章就介绍到这了,更多相关asp.Net Core 集成测试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文章:asp.net Core利用xUnit进行主机级别的网络集成测试详解


--结束END--

本文标题: asp.net core 使用 TestServer 来做集成测试的方法

本文链接: https://lsjlt.com/news/30794.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • asp.net core 使用 TestServer 来做集成测试的方法
    Intro 之前我的项目里的集成测试是随机一个端口,每次都真实的启动一个 WebServer,之前也有看到过微软文档上 TestServer 的介绍,当时没仔细看过以为差不多就...
    99+
    2022-06-07
    net ASP.NET 集成测试 方法 core 测试 ASP
  • ASP.NET Core集成Apollo的方法
    今天小编给大家分享一下ASP.NET Core集成Apollo的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-06-29
  • 在ASP.NET Core Mvc集成MarkDown的方法
      这几天在做文章编辑,首先就想到了markdown,它比其它的都要新,而且很好用,相对于其它的html编辑器,好久不更新,要好得多,哦~对了我现在已经用上新版的Edge了,经...
    99+
    2022-06-07
    net ASP.NET 方法 MVC Markdown core ASP
  • xUnit 编写 ASP.NET Core 单元测试的方法
    还记得 .NET Framework 的 ASP.NET WebForm 吗?那个年代如果要在 Web 层做单元测试简直就是灾难啊。.NET Core 吸取教训,在设计上考虑到...
    99+
    2022-06-07
    单元 ASP.NET 方法 xunit net 单元测试 core 测试 ASP
  • spring boot集成测试的方法
    这篇文章主要介绍“spring boot集成测试的方法”,在日常操作中,相信很多人在spring boot集成测试的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”spri...
    99+
    2024-04-02
  • SpringBoot2 集成测试组件的七种方法
    目录一、背景描述 二、PostMan工具 三、Swagger文档 四、TestRestTemplate类 五、Http请求模式 六、Service层测试 七、MockMvc方式 八、...
    99+
    2024-04-02
  • ASP.NET Core使用JWT认证授权的方法
     demo地址: https://github.com/william0705/JWTS 名词解析 认证 : 识别用户是否合法 授权: 赋予用户权限 (能访问哪些资...
    99+
    2022-06-07
    net 授权 jwt ASP.NET 方法 core ASP
  • ASP.NET Core使用EF创建模型的方法
    这篇文章主要介绍“ASP.NET Core使用EF创建模型的方法”,在日常操作中,相信很多人在ASP.NET Core使用EF创建模型的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”A...
    99+
    2023-06-29
  • IOS使用TestFlight测试的使用方法
    目录一、testflight优势二、开发人员TestFlight的设置操作步骤三、测试人员TestFlight的使用步骤现在最主流的移动端操作系统就是 Android 和 iOS ,...
    99+
    2022-12-17
    TestFlight测试 TestFlight
  • ASP.NET Core使用固定窗口限流的方法是什么
    这篇文章主要讲解了“ASP.NET Core使用固定窗口限流的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET Core使用固定窗口限流的方法是什么...
    99+
    2023-06-22
  • ASP.NET Core使用功能开关控制路由访问的方法
    今天小编给大家分享一下ASP.NET Core使用功能开关控制路由访问的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-06-29
  • Spring Boot 集成PageHelper的使用方法
    目录前言:一、基本集成引入jar包Yml配置文件中添加相关配置封装相关分页方法示例代码前段传入参数执行结果二、分页中的排序字段如何防止SQL注入问题三、复杂的SQL分页语句四、分页失...
    99+
    2024-04-02
  • 如何使用http_load来给Linux系统的服务器做压力测试
    这篇文章主要讲解了“如何使用http_load来给Linux系统的服务器做压力测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用http_load来给Linux系统的服务器做压力测试...
    99+
    2023-06-12
  • Oracle 测试工具 Swingbench 的使用方法
    1、安装 JDK 1.82、安装 Wingbench,下载 解压即可3、初始化模式 SOE 的数据,双击 D:\swingbench\winbin\oewizard 24、执行测试,双击D:\swingbe...
    99+
    2024-04-02
  • python在测试中使用 Mock的方法
    这篇“python在测试中使用 Mock的方法”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“python在测试中使用 Mock的方法”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢...
    99+
    2023-06-06
  • 使用远程Docker进行集成测试的环境搭建过程
    需求背景 团队有集成测试的需求,集成测试需要依赖一些中间件,比如mysql,rabbitmq。每个研发人员有对自己开发的那部分代码进行测试编写和运行检测的需求。 为了不互相影响,可以...
    99+
    2024-04-02
  • 如何搭建使用远程Docker进行集成测试的环境
    这篇文章将为大家详细讲解有关如何搭建使用远程Docker进行集成测试的环境,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求背景团队有集成测试的需求,集成测试需要依赖一些中间件,比如mysql,rabbi...
    99+
    2023-06-20
  • Vertica集成Apache Hudi重磅使用的方法
    本篇内容主要讲解“Vertica集成Apache Hudi重磅使用的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vertica集成Apache Hudi重磅使用的方法”...
    99+
    2023-06-29
  • springboot集成spark并使用spark-sql的方法
    这篇文章主要介绍“springboot集成spark并使用spark-sql的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot集成spark并使用spark-sql的方法”文章...
    99+
    2023-06-29
  • MySQL 之压力测试工具的使用方法
    一、MySQL自带的压力测试工具——Mysqlslap mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测...
    99+
    2022-05-15
    MySQL 压力测试工具 MySQL mysqlslap MySQL 压力测试
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作