使用测试主机或 WebApplicationFactory 的 ASPNetCore Web API 集成测试

kir*_*ran 6 c# integration-testing xunit.net asp.net-core

我正在为 ASPNetCore Web API 项目编写集成测试。在阅读它时,我遇到了两个术语,首先是

Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory

其次是

Microsoft.AspNetCore.TestHost

参考:

  1. https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-2.1

  2. https://koukia.ca/integration-testing-in-asp-net-core-2-0-51d14ede3968

我有点困惑,为什么以及应该使用哪种设置来测试 Web API 控制器?

kir*_*ran 3

我正在遵循旧的方法(TestHost)

因为我的启动类位于另一个程序集(内部)中,并且我一直在暴露IWebHostBuilder我的 API 项目。所以,在这种情况下,我无法使用WebApplicationFactorywhich take Startup.csclass。由于我有一个IWebHostBuilder参考,我可以直接使用它TestServer(IWebHostBuilder)来创建测试客户端。