Информация об изменениях

Сообщение [xUnit] Переправить Debug.WriteLine() в ITestOutputHelper от 30.10.2017 10:45

Изменено 30.10.2017 10:46 VladCore

[xUnit] Переправить Debug.WriteLine() в output соответствующего факта/теории
Хочется весь Debug.WriteLine переправлять в оутпут xUnit.

Посмотрел сюда https://xunit.github.io/docs/capturing-output.html и наколхозил класс DebugOutputAdapter:

    public class FirstTest
    {
        public FirstTest(ITestOutputHelper output)
        {
            DebugOutputAdapter.Bind(output);
        }

        [Fact]
        public void PassingTest()
        {
            Debug.WriteLine("Line 1: " + DateTime.Now);
            Thread.Sleep(4000);
            Debug.WriteLine("Line 2: " + DateTime.Now);
            Assert.Equal(4, Add(2, 2));
        }

        [Theory]
        [InlineData(3)]
        [InlineData(5)]
        [InlineData(6)]
        public void MyFirstTheory(int value)
        {
            Debug.WriteLine("Check theory using " + value);
            Assert.True(IsOdd(value));
        }

        bool IsOdd(int value)
        {
            return value % 2 == 1;
        }
    }

На удивление Resharper "плавно" показывает output в PassingTest. То есть сразу показывает

Line 1: 10/30/2017 1:25:17 PM


потом ждет 4 секунды и показывает

Line 2: 10/30/2017 1:25:21 PM


Вопрос. Как не писать в каждом-каждом тест-классе конструктор такой конструктор?
        public Имя_Тест_Класса(ITestOutputHelper output)
        {
            DebugOutputAdapter.Bind(output);
        }


P.S. Понятно выполнение тестов надо сериализовывать что бы output не перемешивался.

P.P.S. и ещё вопрос — xUnit сортирует ли имена классов и методов при сериализации выполнения как и NUnit консольные и решарперовские раннеры?
[xUnit] Переправить Debug.WriteLine() в output соответствующ
Хочется весь Debug.WriteLine переправлять в оутпут xUnit.

Посмотрел сюда https://xunit.github.io/docs/capturing-output.html и наколхозил класс DebugOutputAdapter:

    public class FirstTest
    {
        public FirstTest(ITestOutputHelper output)
        {
            DebugOutputAdapter.Bind(output);
        }

        [Fact]
        public void PassingTest()
        {
            Debug.WriteLine("Line 1: " + DateTime.Now);
            Thread.Sleep(4000);
            Debug.WriteLine("Line 2: " + DateTime.Now);
            Assert.Equal(4, Add(2, 2));
        }

        [Theory]
        [InlineData(3)]
        [InlineData(5)]
        [InlineData(6)]
        public void MyFirstTheory(int value)
        {
            Debug.WriteLine("Check theory using " + value);
            Assert.True(IsOdd(value));
        }

        bool IsOdd(int value)
        {
            return value % 2 == 1;
        }
    }

На удивление Resharper "плавно" показывает output в PassingTest. То есть сразу показывает

Line 1: 10/30/2017 1:25:17 PM


потом ждет 4 секунды и показывает

Line 2: 10/30/2017 1:25:21 PM


Вопрос. Как не писать в каждом-каждом тест-классе такой как выше конструктор?
        public Имя_Тест_Класса(ITestOutputHelper output)
        {
            DebugOutputAdapter.Bind(output);
        }


P.S. Понятно выполнение тестов надо сериализовывать что бы output не перемешивался.

P.P.S. и ещё вопрос — xUnit сортирует ли имена классов и методов при сериализации выполнения как и NUnit консольные и решарперовские раннеры?