ASP.NET Core集成测试中的WebApplicationFactory和TestServer

时间:2020-02-29 16:59:28

标签: asp.net-core integration-testing

我有两个完整的测试类,定义如下。当我在ApiControllerIT中运行测试时,所有测试均成功运行。 FoundationControllerIT也是如此。但是,当我同时运行两者(通过运行封闭文件夹)时,测试失败。错误消息是:名称为'DefaultQuartzScheduler'的调度程序已经存在。我在Startup.cs文件中有以下定义: services.AddSingleton(IHostedService,QuartzHostedService); 因此,很明显,此行会引起问题(如果我删除此行,则所有测试一起运行都可以)。所以我的问题是-我是Java的新手..因此我对.NET Core Integ测试框架没有很好的了解,但是我的理解是-为每个测试类(例如,一个用于ApiControllerIT的TestServer,另一个用于FoundationControllerIT。这不正确吗?我只是很沮丧,为什么收到一条消息“名称为“ DefaultQuartzScheduler”的调度程序已经存在”。当我运行两个单独的测试类时? TestServer如何相互干扰?

public class ApiControllerIT : IClassFixture<WebApplicationFactory<Startup>>
{
    private readonly WebApplicationFactory<Startup> _factory;

    public ApiControllerIT(WebApplicationFactory<Startup> factory)
    {
        _factory = factory;
    }

    // tests ...

}

public class FoundationControllerIT : IClassFixture<WebApplicationFactory<Startup>>
{
    private readonly WebApplicationFactory<Startup> _factory;

    public FoundationControllerIT(WebApplicationFactory<Startup> factory)
    {
        _factory = factory;
    }

    // tests ...

}

0 个答案:

没有答案