如何从 vstest 记录器获取测试 ID?
How to get test id from vstest logger?
我正在寻找 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
class 有一个 属性 名为 Result
, which is of type TestResult
, that in turn has a property named TestCase
of the same type. That type carries all the information about the test (e.g. the Id、DisplayName
、Source
、...)。
总结:
private void TestResultHandler(object sender, TestResultEventArgs e)
{
Console.WriteLine(e.Result.TestCase.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
class 有一个 属性 名为 Result
, which is of type TestResult
, that in turn has a property named TestCase
of the same type. That type carries all the information about the test (e.g. the Id、DisplayName
、Source
、...)。
总结:
private void TestResultHandler(object sender, TestResultEventArgs e)
{
Console.WriteLine(e.Result.TestCase.Id);
}