xUnit не удается вывести на консоль .NET

#.net-core #xunit.net

#.net-ядро #xunit.net

Вопрос:

Пытаюсь узнать, как получить вывод, отображаемый в консоли с помощью xunit, и изо всех сил. Я использую VSCode и запускаю тесты с помощью dotnet test терминала VSCode. Я также пробовал запускать с терминала за пределами VSCode.

Я также пытался запустить отладочный тест вышеуказанной тестовой функции в окне кода VSCode, но получаю исключение аргумента OmniSharp.

Я создал новый тестовый проект, используя dotnet new xunit и используя следующий тестовый класс с ITestOutputHelper .

 using System;
using System.IO;
using System.Threading.Tasks;

using Xunit;
using Xunit.Abstractions;
using System.Text.Json;
using WebApp.Data;
using WebApp.UnitTests.Fixtures;


namespace WebApp.UnitTests
{
    [Collection("Motion collection")]
    public class MotionInfoTest
    {
        private const string MotionResourceFile = @"WebApp.UnitTests.TestData.motion.json";

        private MotionDetectionFixture _fixture;
        private ITestOutputHelper _output;

        public MotionInfoTest(MotionDetectionFixture fixture, ITestOutputHelper output) {
            _fixture = fixture;
            _output = output;
        }

        [Fact]
        // public async Task TestMotionInfo()
        public void TestMotionInfo()
        {
           try {
               Stream s = _fixture.GetStream(MotionResourceFile);
               
               _output.WriteLine(s.ReadTimeout.ToString());
               if(s is null) {
                   throw new Exception ("ArgumentException");
               }
               _output.WriteLine("Finished TestMotionInfo");
           }
           catch(Exception e) {
               _output.WriteLine("Exception occurred {0}", e.Message);
           }
            //MotionDetection obj = await JsonSerializer.DeserializeAsync<MotionDetection>(_fixture.GetStream(MotionResourceFile));

            Assert.Equal(1,1);
            //Assert.Equal("TensorFlow-WithFiltering-And-MQTT", obj.Plug);
        }
    }
}
  

Файл csproj, созданный dotnet new xunit , является:

 <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
    <PackageReference Include="xunit" Version="2.4.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
    <PackageReference Include="coverlet.collector" Version="1.2.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..WebApp.DataWebApp.Data.csproj" />
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Include="TestData*.json" />
  </ItemGroup>

</Project>
  

Кому-нибудь удалось вывести вывод на консоль?

Ответ №1:

Если я использую следующую команду, то вывод отображается в окне терминала и встроенном терминале VS Code:

dotnet test --logger "console;verbosity=detailed"