我正在寻找由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、DisplayName
、Source
等(。
总结:
private void TestResultHandler(object sender, TestResultEventArgs e)
{
Console.WriteLine(e.Result.TestCase.Id);
}