не удается распечатать выходные данные в окне консоли во время выполнения тестов xunit

#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, но все равно это не сработало.