代码之家  ›  专栏  ›  技术社区  ›  pseudodev

失败的测试仅显示堆栈跟踪,不显示完整日志

  •  0
  • pseudodev  · 技术社区  · 4 月前

    我有一个管道正在运行一些C#Xunit测试。我跑a dotnet test 我指定的命令 --logger:trx 。然后,在代理工作结束时,我有一个 Publish Test Results 步骤。

    管道完成后,如果我转到“测试”选项卡,在那里它分解了每个测试,对于任何失败的测试,我都可以深入到默认的调试选项卡,查看错误消息和堆栈跟踪。附件下没有列出任何内容。

    如果我去 Test Plans / Runs 在测试部分,我可以下载生成的trx文件。trx文件有每个测试的完整输出,所以我不知道为什么它没有作为每个测试的附件列出。我有什么特别的事情要做吗?

    enter image description here

    1 回复  |  直到 4 月前
        1
  •  1
  •   bryanbcook    4 月前

    当你使用 PublishTestResults@2 任务,它创建了一个 试运行 具有 测试结果 The trx 文件是 试运行 。您所指的视图是与个人关联的附件的视图 测试结果 .

    测试结果 您需要使用添加测试附件 TestContext.AddResultFile(..) 例如:

    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace MyTests {
    
      [TestClass]
      public class MyTestFixture
      {
        public TestContext TestContext { get; set; }
    
        [TestMethod]
        public void CanAddAttachment()
        {
          TestContext.AddFile( "path/to/file.txt" );
        }
      }
    }
    

    更新:我注意到你已经标记 xunit 不幸的是,.XUnit不包括附件支持。目前, NUnit MSTest 截至2024年2月 PublishTestResult@2 任务 has support for JUnit attachments.

    要在xUnit测试中添加其他日志记录,您可以使用 IOutputTestHelper 。您添加的任何信息都将显示在 测试结果 :

    using Xunit;
    using Xunit.Abstractions;
    
    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);
        }
    }