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)
我无法调查,因为在调试模式下我没有问题。我被困在这个问题上,任何人都可以帮助我吗?
我的测试中出现了完全相同的错误消息。就我而言,这是应用程序(Web API)本身的错误。
定义了不明确的路由,因此应用程序抛出异常并退出。
不幸的是,当运行测试项目时,您不会“看到”应用程序抛出的异常,因为它在不同的线程上运行。
来自安德鲁·洛克博客:
_hostStartTcs 是一个 TaskCompletionSource,用于处理后台运行的应用程序因异常而退出的边缘情况。这是一个边缘情况,但如果没有它,测试可能会无限期地挂起。
这句话让我意识到应用程序可能只是“崩溃”了,事实证明确实如此。
因此,我还建议您尝试运行您的应用程序并进行健全性检查,确保它在启动时不会崩溃。
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |