C# .net Core 3.0,DirectoryNotFoundException与Xunit集成测试

C# .net Core 3.0,DirectoryNotFoundException与Xunit集成测试,c#,.net-core,xunit,C#,.net Core,Xunit,我在.NETCore3.0上迁移Xunit集成测试时遇到了一个新问题。我在子文件夹中移动了项目,现在我有一个DirectoryNotFoundException TestServerFixture: public class TestServerFixture : WebApplicationFactory<TestStartup> { public HttpClient Client { get; } public ITestOutputHelper Output

我在.NETCore3.0上迁移Xunit集成测试时遇到了一个新问题。我在子文件夹中移动了项目,现在我有一个DirectoryNotFoundException

TestServerFixture:

public class TestServerFixture : WebApplicationFactory<TestStartup>
{
    public HttpClient Client { get; }
    public ITestOutputHelper Output { get; set; }

    protected override IHostBuilder CreateHostBuilder()
    {
        var builder = Host.CreateDefaultBuilder()
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.AddXunit(Output);
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder
                    .UseStartup<TestStartup>()
                    .ConfigureTestServices((services) =>
                    {
                        services
                            .AddControllers()
                            .AddApplicationPart(typeof(Startup).Assembly);
                    });
            });

        return builder;
    }

    public TestServerFixture SetOutPut(ITestOutputHelper output)
    {
        Output = output;
        return this;
    }

    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
        Output = null;
    }
}
但它不起作用

我通过回购向您展示了该问题:


您对正确配置它有什么建议吗?

我在这里找到了一个可用的解决方案:我找到了一个适合我的解决方案/破解方法,可在这里找到:

就我而言,解决方案应该是:

public class TestServerFixture : WebApplicationFactory<Startup>
{
    protected override IHostBuilder CreateHostBuilder()
    {
        var builder = Host.CreateDefaultBuilder()
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.AddXunit(Output);
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder
                    .ConfigureTestServices((services) =>
                    {
                        services
                            .AddControllers()
                            .AddApplicationPart(typeof(Startup).Assembly);
                    });
            });

        return builder;
    }

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.UseStartup<TestStartup>();    
        base.ConfigureWebHost(builder);
    }
}
公共类TestServerFixture:WebApplicationFactory
{
受保护的覆盖IHostBuilder CreateHostBuilder()
{
var builder=Host.CreateDefaultBuilder()
.ConfigureLogging(日志=>
{
logging.ClearProviders();
logging.AddXunit(输出);
})
.ConfigureWebHostDefaults(webBuilder=>
{
韦伯造船厂
.ConfigureTestServices((服务)=>
{
服务
.AddControllers()
.AddApplicationPart(类型(启动).Assembly);
});
});
返回生成器;
}
受保护的覆盖无效配置WebHost(IWebHostBuilder)
{
builder.UseStartup();
base.ConfigureWebHost(构建器);
}
}
public class TestServerFixture : WebApplicationFactory<Startup>
{
    protected override IHostBuilder CreateHostBuilder()
    {
        var builder = Host.CreateDefaultBuilder()
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.AddXunit(Output);
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder
                    .ConfigureTestServices((services) =>
                    {
                        services
                            .AddControllers()
                            .AddApplicationPart(typeof(Startup).Assembly);
                    });
            });

        return builder;
    }

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.UseStartup<TestStartup>();    
        base.ConfigureWebHost(builder);
    }
}