#c# #xunit
#c# #xunit
Вопрос:
public class test2InAnotherProject
{
private readonly ITestOutputHelper output;
public test2InAnotherProject(ITestOutputHelper output)
{
this.output = output;
}
int Diff(int a, int b)
{
return (a - b);
}
int Div(int a, int b)
{
return (b / a);
}
[Fact]
public void Test2()
{
int a = 2, b = 4;
output.WriteLine("Test1: Project 2 in old library");
int c = Diff(a, b);
Assert.Equal(c, (a - b));
output.WriteLine("Test1: Asssert done Project 2 in old library");
}
[Fact]
public void Test3()
{
int a = 2, b = 4;
output.WriteLine("Test2: Project 2 in old library");
int c = Div(a, b);
Assert.Equal(c, (float)((b / a)));
output.WriteLine("Test2: Assert done Project 2 in old library");
}
}
попытка напечатать эти строки при запуске теста через командную строку с помощью команды
тест dotnet -нет сборки
Пытался Console.Writeline
, после чего я попробовал с Output.WriteLine
. Даже когда я запускаю из Visual Studio, я не могу напечатать эти строки в окне вывода.
Ответ №1:
Действительно, нет выходных данных с Console.WriteLine
. И ITestOutputHelper
выходные данные не отображаются в окне вывода. Вместо этого, когда вы нажимаете на тест в Test Explorer, появляется ссылка на Вывод. Нажмите на эту ссылку, чтобы увидеть выходные данные.
Чтобы отобразить выходные данные теста в командной строке, используйте dotnet test --logger "console;verbosity=detailed"
.
Комментарии:
1. я использую класс xunit runner и создаю другое приложение для запуска пройденных тестов dll. dll из test2InAnotherProject передается в реализацию xunit runner, которая запускает dll в окне консоли. Поэтому я бы хотел выводить данные в окно консоли при запуске приложения.
Ответ №2:
Запустив dotnete test
из консоли powershell, такой как консоль диспетчера пакетов или консоль ISE powershell, вы можете получить ВСЕ Console.WriteLine
выходные данные для проекта Xunit.
В powershel ISE
запустите этот скрипт:
cls
cd 'path/to/project/test/folder'
dotnet test
Также любое Console.WriteLine(..)
из исходного кода отображается в консоли PS.
Ответ №3:
Пожалуйста, обратите внимание, что вы можете использовать ITestOutputHelper, и он должен записывать выходные данные.
Пожалуйста, обратитесь к этой документации для получения более подробной информации.
public class MyTestClass
{
private readonly ITestOutputHelper output;
public MyTestClass(ITestOutputHelper output)
{
this.output = output;
}
[Fact]
public void MyTest()
{
var temp = "my class!";
output.WriteLine("This is output from {0}", temp);
}
}
Комментарии:
1. согласно моему коду. я уже использовал ITestOutputHelper, но все равно это не сработало.