Warm tip: This article is reproduced from serverfault.com, please click

c#-AspNetCore集成测试多个WebApplicationFactory实例?

(c# - AspNetCore Integration Testing Multiple WebApplicationFactory Instances?)

发布于 2019-03-01 11:58:03

有谁知道是否可以WebApplicationFactory<TStartop>()在同一单元测试中托管多个实例

我已经尝试过并且似乎无法解决这一问题。

IE

_client = WebHost<Startup>.GetFactory().CreateClient();
var baseUri = PathString.FromUriComponent(_client.BaseAddress);
_url = baseUri.Value;

_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
    "Bearer", "Y2E890F4-E9AE-468D-8294-6164C59B099Y");

WebHost 只是一个帮助器类,它使我可以轻松地在同一行中建立工厂,然后建立一个客户。

在幕后,它所做的就是:

new WebApplicationFactory<TStartup>() 但是还有其他一些事情。

如果我能站起来另一个Web服务器的另一个实例来测试服务器到服务器的功能那就 太好了。

有人知道这是否可行吗?

Questioner
IbrarMumtaz
Viewed
0
Chris Pratt 2019-03-01 22:35:40

不,不可能。WebApplicationFactory依靠xUnit's IClassFixture,它必须在类级别应用,这意味着你只能对苹果一口气。WebApplicationFactory本身可以针对每个测试进行定制,可以满足大多数需要“不同”测试案例的用例,但是这并不能帮助你同时需要两个完全独立的活动测试服务器。

但是,这就是说,你首先要的是不良的测试设计。测试的全部目的是消除变量,以便你实际上可以确保SUT的一部分在正常工作。即使在集成测试环境中,你仍然只是在查看应用程序各部分之间的特定交互。有两台互相提供帮助的测试服务器,可以有效地将变量相乘,从而不能保证任何一方都能正常工作。