From 08e73c5fb5c201054d612d746a703577a893e6ba Mon Sep 17 00:00:00 2001 From: Youssef1313 Date: Wed, 1 Apr 2026 15:54:20 +0200 Subject: [PATCH] Prefer setting TrxFullyQualifiedTypeNameProperty per TestMethodIdentifierProperty --- .../ObjectModel/ObjectModelConverters.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Platform/Microsoft.Testing.Extensions.VSTestBridge/ObjectModel/ObjectModelConverters.cs b/src/Platform/Microsoft.Testing.Extensions.VSTestBridge/ObjectModel/ObjectModelConverters.cs index 756d18a989..a6bf58f66b 100644 --- a/src/Platform/Microsoft.Testing.Extensions.VSTestBridge/ObjectModel/ObjectModelConverters.cs +++ b/src/Platform/Microsoft.Testing.Extensions.VSTestBridge/ObjectModel/ObjectModelConverters.cs @@ -147,11 +147,23 @@ public static TestNode ToTestNode( testNode.Properties.Add(new TrxTestDefinitionName(testResult.TestCase.DisplayName ?? testResult.TestCase.FullyQualifiedName)); - // TODO: Consider retrieving TestMethodIdentifierProperty first (which could have been added through addAdditionalProperties. - // VSTest's TestCase.FQN is very non-standard. - // We should avoid using it if we can. - if (TryParseFullyQualifiedType(testResult.TestCase.FullyQualifiedName, out string? fullyQualifiedType)) + TestMethodIdentifierProperty? testMethodIdentifierProperty = testNode.Properties.SingleOrDefault(); + if (testMethodIdentifierProperty is not null) { + // TODO: Should TRX className have arity for generic classes? + if (RoslynString.IsNullOrEmpty(testMethodIdentifierProperty.Namespace)) + { + testNode.Properties.Add(new TrxFullyQualifiedTypeNameProperty(testMethodIdentifierProperty.TypeName)); + } + else + { + testNode.Properties.Add(new TrxFullyQualifiedTypeNameProperty($"{testMethodIdentifierProperty.Namespace}.{testMethodIdentifierProperty.TypeName}")); + } + } + else if (TryParseFullyQualifiedType(testResult.TestCase.FullyQualifiedName, out string? fullyQualifiedType)) + { + // VSTest's TestCase.FQN is very non-standard. + // We should avoid using it if we can, and so we prefer TestMethodIdentifierProperty first. testNode.Properties.Add(new TrxFullyQualifiedTypeNameProperty(fullyQualifiedType)); } else