Ошибка интеграционных тестов .NET 10.0 с приспособлением сборки xunit v3 и WebApplicationFactoryC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка интеграционных тестов .NET 10.0 с приспособлением сборки xunit v3 и WebApplicationFactory

Сообщение Anonymous »

При настройке интеграционного теста с помощью .NET 10.0 SDK и нового xunit v3 я получаю следующую ошибку при попытке настроить WebApplicationFactory:

System.InvalidOperationException: сервер не запущен или веб-приложение не настроено.

Я использую Microsoft.AspNetCore.Mvc.Testing v10.0.0 с функцией сборки сборки xunit v3

Код: Выделить всё

[assembly: AssemblyFixture(typeof(ApiFactory))]
namespace WebApi.Tests.Integration.Fixtures;

public class ApiFactory : WebApplicationFactory, IAsyncLifetime
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.ConfigureServices(services =>
{
var descriptor =
services.SingleOrDefault(x => x.ServiceType == typeof(DbContextOptions));

if (descriptor != null)
{
services.Remove(descriptor);
}

services.AddDbContext(options
=> options.UseSqlServer("Server=.;Database=Database;Trusted_Connection=True;"));

services.AddHttpClient("Api", client =>
{
client.BaseAddress = new Uri("http://localhost/api/v1/");
});
});
}

public async ValueTask InitializeAsync()
{
}

public new async Task DisposeAsync()
{
await base.DisposeAsync();
}
}
У меня есть простой интеграционный тест, который вызывает конечную точку проверки работоспособности и проверяет наличие ответа 200.

Код: Выделить всё

public class HealthCheckTests
{
private readonly HttpClient _client;

public HealthCheckTests(ApiFactory factory)
{
_client = factory.CreateClient();
}

[Fact]
public async Task Heath_Check_Success_Test()
{
// arrange

// act
var response = await _client.GetAsync("healthcheck", TestContext.Current.CancellationToken);

// assert
response.StatusCode.Should().Be(HttpStatusCode.OK);
}
}
Проблема возникает при переопределении метода ConfigureWebHost. При этом я получаю сообщение об ошибке:

System.InvalidOperationException: сервер не запущен или веб-приложение не настроено.

Если я закомментирую переопределение, тест пройдет успешно, но я не смогу настроить WebApplicationFactory для своих нужд тестирования.
Изменить
Смотрите трассировку стека ниже.

System.InvalidOperationException: сервер не запущен или веб-приложение не настроено.
в Microsoft.AspNetCore.TestHost.TestServer.get_Application()
в Microsoft.AspNetCore.TestHost.TestServer.CreateHandler()
в Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory

Код: Выделить всё

1.CreateHandler() at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory
1.CreateDefaultClient (обработчики DelegatingHandler[])
в Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory

Код: Выделить всё

1.CreateDefaultClient(Uri baseAddress, DelegatingHandler[] handlers) at Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory
1.CreateClient (параметры WebApplicationFactoryClientOptions)
в Microsoft.AspNetCore.Mvc.Testing.WebApplicationFactory

Код: Выделить всё

1.CreateClient() at CampaignService.WebApi.Tests.Integration.Tests.HealthCheckTests..ctor(ApiFactory factory) in C:\WebApi.Tests.Integration\Tests\HealthCheckTests.cs:line 14 at InvokeStub_HealthCheckTests..ctor(Object, Span
1)
at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags ignoreAttr, связыватель Binder, параметры Object[], культура CultureInfo)


Подробнее здесь: https://stackoverflow.com/questions/798 ... ebapplicat
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»