diff --git a/src/BenchmarkDotNet.TestAdapter/BenchmarkCaseExtensions.cs b/src/BenchmarkDotNet.TestAdapter/BenchmarkCaseExtensions.cs index dec7aae8c1..54557ae968 100644 --- a/src/BenchmarkDotNet.TestAdapter/BenchmarkCaseExtensions.cs +++ b/src/BenchmarkDotNet.TestAdapter/BenchmarkCaseExtensions.cs @@ -25,17 +25,17 @@ internal static TestCase ToVsTestCase(this BenchmarkCase benchmarkCase, string a { var benchmarkMethod = benchmarkCase.Descriptor.WorkloadMethod; var fullClassName = benchmarkCase.Descriptor.Type.GetCorrectCSharpTypeName(); - var benchmarkMethodName = benchmarkCase.Descriptor.WorkloadMethod.Name; - var benchmarkFullMethodName = $"{fullClassName}.{benchmarkMethodName}"; - - // Display name has arguments as well. - var displayMethodName = FullNameProvider.GetMethodName(benchmarkCase); - if (includeJobInName) - displayMethodName += $" [{benchmarkCase.GetUnrandomizedJobDisplayInfo()}]"; + var parametrizedMethodName = FullNameProvider.GetMethodName(benchmarkCase); + var displayJobInfo = benchmarkCase.GetUnrandomizedJobDisplayInfo(); + var displayMethodName = parametrizedMethodName + (includeJobInName ? $" [{displayJobInfo}]" : ""); var displayName = $"{fullClassName}.{displayMethodName}"; - var vsTestCase = new TestCase(benchmarkFullMethodName, VsTestAdapter.ExecutorUri, assemblyPath) + // We use displayName as FQN to workaround the Rider/R# problem with FQNs processing + // See: https://github.com/dotnet/BenchmarkDotNet/issues/2494 + var fullyQualifiedName = displayName; + + var vsTestCase = new TestCase(fullyQualifiedName, VsTestAdapter.ExecutorUri, assemblyPath) { DisplayName = displayName, Id = GetTestCaseId(benchmarkCase) @@ -67,7 +67,8 @@ internal static TestCase ToVsTestCase(this BenchmarkCase benchmarkCase, string a internal static string GetUnrandomizedJobDisplayInfo(this BenchmarkCase benchmarkCase) { var jobDisplayInfo = benchmarkCase.Job.DisplayInfo; - if (!benchmarkCase.Job.HasValue(CharacteristicObject.IdCharacteristic) && benchmarkCase.Job.ResolvedId.StartsWith("Job-", StringComparison.OrdinalIgnoreCase)) + if (!benchmarkCase.Job.HasValue(CharacteristicObject.IdCharacteristic) && + benchmarkCase.Job.ResolvedId.StartsWith("Job-", StringComparison.OrdinalIgnoreCase)) { // Replace Job-ABCDEF with Job jobDisplayInfo = "Job" + jobDisplayInfo.Substring(benchmarkCase.Job.ResolvedId.Length); @@ -91,4 +92,4 @@ internal static Guid GetTestCaseId(this BenchmarkCase benchmarkCase) return testIdProvider.GetId(); } } -} +} \ No newline at end of file