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

Man*_*ini 4 .net c# integration-testing xunit.net fixtures

我正在使用 .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;
    }

}
Run Code Online (Sandbox Code Playgroud)

我无法调查,因为在调试模式下我没有问题。我被困在这个问题上,任何人都可以帮助我吗?

Ped*_*ija 5

我的测试中出现了完全相同的错误消息。就我而言,这是应用程序(Web API)本身的错误。

定义了不明确的路由,因此应用程序抛出异常并退出。

不幸的是,当运行测试项目时,您不会“看到”应用程序抛出的异常,因为它在不同的线程上运行。

来自安德鲁·洛克博客

_hostStartTcs 是一个 TaskCompletionSource,用于处理后台运行的应用程序因异常而退出的边缘情况。这是一个边缘情况,但如果没有它,测试可能会无限期地挂起。

这句话让我意识到应用程序可能只是“崩溃”了,事实证明确实如此。

因此,我还建议您尝试运行您的应用程序并进行健全性检查,确保它在启动时不会崩溃。