Skip to content

Commit

Permalink
Allow to override GetDisplayName method from DataRowAttribute (#1413)
Browse files Browse the repository at this point in the history
fix #1336
  • Loading branch information
engyebrahim committed Nov 30, 2022
1 parent 20cf150 commit 7e9ca8c
Show file tree
Hide file tree
Showing 6 changed files with 72 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public DataRowAttribute(params object?[]? data)
}

/// <inheritdoc />
public string? GetDisplayName(MethodInfo methodInfo, object?[]? data)
public virtual string? GetDisplayName(MethodInfo methodInfo, object?[]? data)
{
if (!string.IsNullOrWhiteSpace(DisplayName))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ Microsoft.VisualStudio.TestTools.UnitTesting.DataRowAttribute.DataRowAttribute(p
Microsoft.VisualStudio.TestTools.UnitTesting.DataRowAttribute.DisplayName.get -> string?
Microsoft.VisualStudio.TestTools.UnitTesting.DataRowAttribute.DisplayName.set -> void
Microsoft.VisualStudio.TestTools.UnitTesting.DataRowAttribute.GetData(System.Reflection.MethodInfo! methodInfo) -> System.Collections.Generic.IEnumerable<object?[]!>!
Microsoft.VisualStudio.TestTools.UnitTesting.DataRowAttribute.GetDisplayName(System.Reflection.MethodInfo! methodInfo, object?[]? data) -> string?
Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute
Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute.ConnectionString.get -> string?
Microsoft.VisualStudio.TestTools.UnitTesting.DataSourceAttribute.DataAccessMethod.get -> Microsoft.VisualStudio.TestTools.UnitTesting.DataAccessMethod
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@

virtual Microsoft.VisualStudio.TestTools.UnitTesting.DataRowAttribute.GetDisplayName(System.Reflection.MethodInfo! methodInfo, object?[]? data) -> string?
10 changes: 10 additions & 0 deletions test/E2ETests/Smoke.E2E.Tests/Parameterized tests/DataRowTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,16 @@ public void ExecuteOnlyDerivedClassDataRowsWhenBothBaseAndDerivedClassHasDataRow
ValidatePassedTestsCount(5);
}

public void GetDisplayName_AfterOverriding_GetsTheNewDisplayname()
{
InvokeVsTestForExecution(new string[] { TestAssembly }, testCaseFilter: "TestCategory~OverridedGetDiplayName");

ValidatePassedTestsContain(
"Overrided DisplayName");

ValidatePassedTestsCount(1);
}

public void ExecuteOnlyDerivedClassDataRowsWhenItOverridesBaseClassDataRows_SimpleDataRows()
{
InvokeVsTestForExecution(new string[] { TestAssembly }, testCaseFilter: "FullyQualifiedName~DerivedClass&TestCategory~DataRowSimple");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Diagnostics;
using System.Reflection;

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace DataRowAttributeTestProject;

[TestClass]
public class DataRowTests_OverrideGetDisplayName
{
[TestCategory("OverridedGetDiplayName")]
[DummyDataRowAttribute]
[TestMethod]
public void TestMethod()
{
Assert.IsTrue(true);
}

private class DummyDataRowAttribute : DataRowAttribute
{
public DummyDataRowAttribute()
: base()
{
}

public override string GetDisplayName(MethodInfo methodInfo, object[] data)
{
return "Overrided DisplayName";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,19 @@ public void GetDisplayNameForArrayOfOneItem()
Verify(displayName == "MyMethod (a)");
}

public void GetDisplayName_AfterOverriding_GetsTheNewDisplayname()
{
// Arrange
var dataRow = new DummyDataRowAttribute();
var methodInfoMock = new Mock<MethodInfo>();

// Act
var displayName = dataRow.GetDisplayName(methodInfoMock.Object, dataRow.Data);

// Assert
Verify(displayName == "Overrided DisplayName");
}

public void GetDisplayNameForArrayOfMultipleItems()
{
// Arrange
Expand Down Expand Up @@ -164,4 +177,17 @@ public void GetDisplayNameForMultipleArraysOfMultipleItems()
// Assert
Verify(displayName == "MyMethod (System.String[],System.String[])");
}

private class DummyDataRowAttribute : DataRowAttribute
{
public DummyDataRowAttribute()
: base()
{
}

public override string GetDisplayName(MethodInfo methodInfo, object[] data)
{
return "Overrided DisplayName";
}
}
}

0 comments on commit 7e9ca8c

Please sign in to comment.