Как я могу создать покрытие кода для .Net Core 2.x из интеграционных тестов на linux / mac? - PullRequest
0 голосов
/ 03 января 2019

Я работаю в .NET core 2 на Mac (и мой сервер сборки - Linux), и я ищу способ создания покрытия кода для интеграции тестов, которые используют и встроенный веб-сервер в качестветестируемая система.Я могу получить покрытие для моих модульных тестов, но не для моих тестов в стиле интеграции.

Я относительно новичок в .NET, но я как можно лучше ознакомился с экосистемой тестирования впоследние несколько месяцев.

В настоящее время я тестирую API-интерфейс ядра .NET 2.2, используя xUnit в качестве моей тестовой среды и используя поставляемый Microsoft пакет Microsoft.AspNetCore.Mvc.Testing для генерации тестового сервера внутри моих тестов.Очень похоже на эту ссылку

Затем у меня есть тесты, которые используют TestClient для отправки HTTP-запросов во встроенную SUT и подтверждения ответа.

Я могу создать покрытие кодадля моих юнит-тестов с использованием AltCover , и это прекрасно работает!Но когда я запускаю altcover над моим проектом интеграционных тестов, я не получаю результатов покрытия.

У меня для проектов DebugType установлено значение Full, и файлы символов отладки, похоже, создаются для всего соответствующего кода.

Тестовое устройство xUnit для моего SUT

namespace Redbox.Product.Tests.Integration.Util
{
    public class TestConfigurationFixture
    {
        private readonly WebApplicationFactory<TestStartup> _webApplicationFactory;

        public TestConfigurationFixture()
        {
            _webApplicationFactory = new CustomWebApplicationFactory<TestStartup>();
        }


        public HttpClient CreateClient()
        {
            return _webApplicationFactory.CreateClient();
        }
    }
}

Тест, который выполняется на этом тестовом приборе

    [Fact]
    public async Task ResultsForQueryFound_RespondsOK()
    {
        var response = await _client.PostAsJsonAsync("/products/search",
                                                     new ProductSearchRequest
                                                     {
                                                         Query = "foo"
                                                     })
                                    .ToHelper();

        response.Should().HaveStatus(OK);
    }

Я могу сгенерировать покрытие кода для своих модульных тестов, используя AltCover , и это прекрасно работает!Но когда я запускаю altcover над моим проектом интеграционных тестов, я не получаю результатов покрытия.

Кто-нибудь смог создать покрытие для этого типа теста?

...