学习 ASP.NET Core 2.1:集成测试中使用 WebApplicationFactory
2018-06-18 16:47
1101 查看
WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中带来的新东东,它封装了 TestServer 的使用,让 ASP.NET Core 的集成测试更简便、配置更灵活。
今天在一个实际项目中进行了体验,在这篇博文中简单记录一下。
修改集成测试所在的 .csproj 项目文件,Sdk 要设置为 Microsoft.NET.Sdk.Web
<Project Sdk="Microsoft.NET.Sdk.Web">
添加 Microsoft.AspNetCore.App 的 nuget 包引用
<PackageReference Include="Microsoft.AspNetCore.App" />
添加 Microsoft.AspNetCore.Mvc.Testing 的 nuget 包引用,WebApplicationFactory 就在其中
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.1.0" />
集成测试类实现 IClassFixture<WebApplicationFactory<Startup>> 接口
public class WebApiTest : IClassFixture<WebApplicationFactory<Startup>> { }
实现了 IClassFixture 接口就能自动在测试类的构造函数中依赖注入 IClassFixture 泛型中指定的类型,这里就是 WebApplicationFactory 。
有了 WebApplicationFactory ,就可以直接用它创建 HttpClient 实例,代码如下:
public class WebApiTest : IClassFixture<WebApplicationFactory<Startup>> { private readonly HttpClient _httpClient; public WebApiTest(WebApplicationFactory<Startup> factory) { _httpClient = factory.CreateClient(); } }
之前没有 WebApplicationFactory 时的代码是这样的
public class WebApiTest { private readonly HttpClient _httpClient; public WebApiTest() { _httpClient = new TestServer(new WebHostBuilder().UseStartup<Startup>()) .CreateClient(); } }
上面简单的示例代码只是小试牛刀,WebApplicationFactory 更强大之处是通过继承它重写 ConfigureWebHost() 方法来配置 WebHost
public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class { protected override void ConfigureWebHost(IWebHostBuilder builder) { builder.ConfigureServices(services => { //... }); } }
相关链接:
相关文章推荐
- ASP.NET Core 集成测试中结合 WebApplicationFactory 使用 SQLite 内存数据库
- ASP.NET AJAX 宝典系列(2) 在Visual Studio 2005 Web Application 项目中使用AJAX
- 在Visual Studio 2005 Web Application Project中使用ASP.NET AJAX
- (asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用
- 一步步学习SPD2010--第十四章节--在Web页面使用控件(6)--测试ASP.NET表单
- 【问题记录】Asp.net WebApplication和WebSite中用户控件的使用区别
- Web Application 项目中使用ASP.NET 2.0 Profile
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
- (asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用
- 在ASP.NET Web Application中使用App_Code文件夹引发的异常
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(六)-- 依赖注入
- (asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
- (asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用
- Coalesys WebMenu for ASP.NET 2.1使用初探
- 在Visual Studio 2005 Web Application Project中使用ASP.NET AJAX
- 一步步学习SPD2010--第十四章节--在Web页面使用控件(4)--使用ASP.NET验证控件
- Unity&WebForm(1): 自定义IHttpHandlerFactory使用Unity对ASP.NET Webform页面进行依赖注入
- 一步步学习SPD2010--第十四章节--在Web页面使用控件(6)--测试ASP.NET表单
- ASP.NET温故而知新学习系列之ASP.NET中的多线程编程—.NET下的多线程编程2.1-Thread类的使用