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()
.
Перехватывает перехватывание, и вы увидите результат в результатах теста.