如何从 vstest 记录器获取测试 ID



我正在寻找由vstest.console.exe运行的测试的id。我通过从程序集Microsoft.VisualStudio.TestPlatform.ObjectModel实现 ITestLogger 接口创建了自定义记录器,并创建了三个处理程序。

[ExtensionUri("logger://SimpleLogger")]
    [FriendlyName("SimpleLogger")]
    public class SimpleConsoleLogger : ITestLogger
    {
        public void Initialize(TestLoggerEvents events, string testRunDirectory)
        {
            events.TestRunMessage += TestMessageHandler;
            events.TestResult += TestResultHandler;
            events.TestRunComplete += TestRunCompleteHandler;
        }
        private void TestMessageHandler(object sender, TestRunMessageEventArgs e)
        {
        }
        private void TestResultHandler(object sender, TestResultEventArgs e)
        {
        }
        private void TestRunCompleteHandler(object sender, TestRunCompleteEventArgs e)
        {
        }
    }

但这些事件参数都不包含测试 ID。所以我很困惑,因为当我使用 /Logger:trx 属性运行测试时,我可以在.trx文件中看到测试 ID。如何使用我的自定义记录器获取它?

TestResultEventArgs类有一个名为 Result 的属性,该属性的类型为 TestResult ,而该属性又具有一个名为 TestCase 的属性。该类型携带有关测试的所有信息(例如 Id、DisplayNameSource 等(。

总结:

    private void TestResultHandler(object sender, TestResultEventArgs e)
    {
        Console.WriteLine(e.Result.TestCase.Id);
    }

最新更新