WebApplicationFactory错误,在调试模式下未抛出

4

我正在使用一个 .NET Nunit 项目,并尝试使用 WebApplicationFactory 类为我的集成测试创建夹具。

当我运行测试时,我会收到以下异常:

System.InvalidOperationException:服务器未启动或未配置任何 Web 应用程序。

但是,如果我调试代码,就不会出现任何错误,测试也能够正常运行。我从几个在线资源中复制粘贴了一些不同的好实现,还删除了所有测试配置或服务替换,但仍然会出现此错误。

这是我的配置:

public class Initializer
{
    protected WebApplicationFactory<Program> application { get; set; }
    protected HttpClient client { get; set; }

    protected IServiceProvider _serviceProvider;

    [SetUp]
    public void RunBeforeAnyTests()
    {
        application = new WebApplicationFactory<Program>().WithWebHostBuilder(conf =>
        {
            conf.UseEnvironment("Test");
        });

        client = application.Server.CreateClient();
        _serviceProvider = application.Services;
    }

}

我无法调查问题,因为在调试模式下我没有遇到这个问题。我陷入了困境,有人能帮助我吗?


这个回答解决了你的问题吗?以下构造函数参数没有匹配的夹具数据 - panoskarajohn
1个回答

3
我遇到了与测试相同的错误信息。在我的情况下,这是应用程序(Web API)本身出现的错误。
定义了一个模糊不清的路由,因此应用程序抛出异常并退出。
不幸的是,运行测试项目时,您看不到应用程序抛出的异常,因为它在不同的线程上运行。
来自Andrew Lock blog的话:
_hostStartTcs是一个TaskCompletionSource,用于处理后台运行的应用程序由于异常而退出的边缘情况。这是一个边缘情况,但如果没有它,测试可能会无限期地挂起。
那个声明让我意识到应用程序可能会“崩溃”,结果确实如此。
因此,我也建议您尝试运行应用程序,并进行合理性检查,以确保启动时不会崩溃。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接