Xunit не выводит сообщение на панель вывода

В сообществе VS 2015 у меня есть пример проекта ASP.NET 5 (vNext) и проект с модульными тестами (xUnit.net). Версия DNX 1.0.0-beta5. Моя цель - добавить сообщения во время тестового прогона к панели вывода. Здесь Я сделал способ сделать это, поэтому мой код unit test выглядит следующим образом:

using Xunit;
using Xunit.Abstractions;

namespace UnitTests
{

    public class UnitTest1
    {
        ITestOutputHelper output;

        public UnitTest1(ITestOutputHelper output)
        {
            this.output = output;
        }

        [Fact]
        public void TestTestTest()
        {
            output.WriteLine("Test Message");
            Assert.Equal(2, 2);
        }

    }
}

Тест-тестировщик Visual Studio обнаруживает этот тест (и это нормально), но все, что у меня есть на панели "Вывод" (из "Тесты" ):

------ Run test started ------
------ Test started: Project: UnitTests ------
Starting  Microsoft.Framework.TestHost [C:\Users\*******\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta5\bin\dnx.exe --appbase "C:\Users\*******\Documents\Visual Studio 2015\Projects\MvcMovie\UnitTests" Microsoft.Framework.ApplicationHost --port 55837 Microsoft.Framework.TestHost --port 55893]
Connected to Microsoft.Framework.TestHost
Running tests in 'C:\Users\*******\Documents\Visual Studio 2015\Projects\MvcMovie\UnitTests\project.json'
========== Run test finished: 1 run (0:00:03,2267169) ==========

Кроме того, нет ссылки "Вывод" в выбранной тестовой информации, как здесь: введите описание изображения здесь  (Только "Тест прошел... Истекшее время..." )

Что делать, чтобы сделать это ITestOutputHelper?

Ответы

Ответ 1

Попробуйте это решение. Он работает для меня (VS2017 xunit 2.2.0.3545).

Попробуйте добавить ниже конфигурацию в файл App.Config. (Я не знаю, почему это просто нужно. Если не выйдет, просто добавьте новый в свой тестовый проект.)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xunit.diagnosticMessages" value="true"/>
  </appSettings>
</configuration>

Выходная информация будет записана в формате Test, как ожидается, как показано ниже.

[xUnit.net 00:00:00.0853907]   Starting:    xxxAssemblyName (parallel test collections = on, max threads = 8)
[xUnit.net 00:00:00.1689373]     Example.xxxTestClassName [PASS]
[xUnit.net 00:00:00.1697265]       Output:
[xUnit.net 00:00:00.1700698]         xxxx your Test Message
[xUnit.net 00:00:00.1797303]   Finished:    xxxAssemblyName 

Надеюсь, это полезно. Пожалуйста, дайте мне знать, если это сработает. Спасибо.

Ответ 2

Я также столкнулся с этим в первый раз, когда использовал XUnit после долгого использования Nunit. Удивительно, что XUnit напрямую не поддерживает вывод консоли, но предлагает некоторые другие способы достижения того же.

https://xunit.github.io/docs/capturing-output.html

Если вы действительно не инвестировали в XUnit, я бы сказал, что самое простое в использовании - просто использовать Nunit или MsTest, потому что обе поддерживают простую console.writeline

Ответ 3

Просто используйте Console.Write() и Console.WriteLine().

Перехватывает перехватывание, и вы увидите результат в результатах теста.