Печать в Resharper и окно вывода VSTest - PullRequest
0 голосов
/ 06 мая 2019

Я знаю и читал о * XUnit ITestOutputHelper и Debug.Trace методах, но мне было интересно, есть ли другой возможный способ, который позволил бы мне использовать статический регистратор в моем коде ниже, возможно, у Xunit есть точка расширяемости о чем я не знаю?

У меня есть метод расширения, который позволяет мне писать модульные тесты в стиле BDD, и было бы здорово, если бы я мог выводить каждый шаг в окно вывода:

    internal static class Spec
    {
        internal static void x(this string step, Action x)
        {
            try
            {
                x();

               //print step to the output window
            }
            catch (Exception ex)
            {
                throw new Exception($"\n\n{step} failed\n", ex);
            }
        }

        internal static void x(this string step)
        {
        }
    }

приведенный выше код позволяет мне писать тесты так:

        [Theory]
        [AutoMoqData]
        public void CorrelationId_WhenCorrelationIdIsPassedIn(
            string result,
            string correlationId,
            [Frozen(Matching.DirectBaseType)] DefaultHttpContext httpContext,
            [Frozen] Mock<IHttpContextAccessor> httpContextAccessorMock,
            CorrelationIdProvider sut)
        {
            $"Given a correlation id header value of {correlationId} has been passed in"
                .x(() =>
                {
                    httpContext.Request.Headers["x-Correlation-ID"] = correlationId;
                    httpContextAccessorMock.Setup(x => x.HttpContext).Returns(httpContext);
                });

            "When the correlation id is retrieved"
                .x(() => result = sut.CorrelationId);

            "Then the correlation id is not empty"
                .x(() => result.Should().NotBeEmpty());

            $"And the correlation id matches {correlationId}"
                .x(() => result.Should().Be(result));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...