diff --git a/src/TestFramework/vnext/DataTestMethodAttribute.cs b/src/TestFramework/vnext/DataTestMethodAttribute.cs index a3dc013880..fa5b68e3d3 100644 --- a/src/TestFramework/vnext/DataTestMethodAttribute.cs +++ b/src/TestFramework/vnext/DataTestMethodAttribute.cs @@ -4,6 +4,7 @@ namespace Microsoft.VisualStudio.TestTools.UnitTesting { using System; using System.Collections.Generic; + using System.Globalization; #region DataRow @@ -52,6 +53,10 @@ internal static TestResult[] RunDataDrivenTest(ITestMethod testMethod, DataRowAt { result.DisplayName = dataRow.DisplayName; } + else + { + result.DisplayName = string.Format(CultureInfo.CurrentCulture, FrameworkMessages.DataDrivenResultDisplayName, testMethod.TestMethodName, string.Join(",", dataRow.Data)); + } results.Add(result); } diff --git a/src/TestFramework/vnext/FrameworkMessages.Designer.cs b/src/TestFramework/vnext/FrameworkMessages.Designer.cs index 14b97c7b34..7d2ad0491e 100644 --- a/src/TestFramework/vnext/FrameworkMessages.Designer.cs +++ b/src/TestFramework/vnext/FrameworkMessages.Designer.cs @@ -1,7 +1,7 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.18010 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -11,7 +11,8 @@ namespace Microsoft.VisualStudio.TestTools.UnitTesting { using System; using System.Reflection; - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -39,8 +40,7 @@ internal FrameworkMessages() { public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - var assembly = typeof(FrameworkMessages).GetTypeInfo().Assembly; - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.VisualStudio.TestTools.UnitTesting.FrameworkMessages", assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.VisualStudio.TestTools.UnitTesting.FrameworkMessages", typeof(FrameworkMessages).GetTypeInfo().Assembly); resourceMan = temp; } return resourceMan; @@ -232,6 +232,15 @@ public static string ContainsFail { } } + /// + /// Looks up a localized string similar to {0} ({1}). + /// + public static string DataDrivenResultDisplayName { + get { + return ResourceManager.GetString("DataDrivenResultDisplayName", resourceCulture); + } + } + /// /// Looks up a localized string similar to Assert.Equals should not be used for Assertions. Please use Assert.AreEqual & overloads instead.. /// diff --git a/src/TestFramework/vnext/FrameworkMessages.resx b/src/TestFramework/vnext/FrameworkMessages.resx index 716f77a9d8..5350395f13 100644 --- a/src/TestFramework/vnext/FrameworkMessages.resx +++ b/src/TestFramework/vnext/FrameworkMessages.resx @@ -271,4 +271,7 @@ Stack Trace: {4} No DataRowAttribute specified. Atleast one DataRowAttribute is required with DataTestMethodAttribute. + + {0} ({1}) + \ No newline at end of file diff --git a/test/UnitTests/UnitTestFramework.Tests/DataTestMethodAttributeTests.cs b/test/UnitTests/UnitTestFramework.Tests/DataTestMethodAttributeTests.cs new file mode 100644 index 0000000000..0cf6a5f8fb --- /dev/null +++ b/test/UnitTests/UnitTestFramework.Tests/DataTestMethodAttributeTests.cs @@ -0,0 +1,75 @@ +// Copyright (c) Microsoft. All rights reserved. + +using System.Collections.Generic; + +namespace UnitTestFramework.Tests +{ + extern alias FrameworkV1; + extern alias FrameworkV2; + + using Moq; + using System; + + using TestFrameworkV1 = FrameworkV1.Microsoft.VisualStudio.TestTools.UnitTesting; + using TestFrameworkV2 = FrameworkV2.Microsoft.VisualStudio.TestTools.UnitTesting; + + /// + /// Tests for class DataTestMethodAttribute + /// + [TestFrameworkV1.TestClass] + public class DataTestMethodAttributeTests + { + private Mock testMethod; + + [TestFrameworkV1.TestInitialize] + public void TestInit() + { + this.testMethod = new Mock(); + } + + [TestFrameworkV1.TestMethod] + public void RunDataDrivenTestShouldFillInDisplayNameWithDataRowDisplayNameIfProvided() + { + int dummyIntData = 2; + string dummyStringData = "DummyString"; + TestFrameworkV2.DataRowAttribute dataRowAttribute = new TestFrameworkV2.DataRowAttribute(dummyIntData, + dummyStringData); + dataRowAttribute.DisplayName = "DataRowTestDisplayName"; + + TestFrameworkV2.TestResult testResult = new TestFrameworkV2.TestResult(); + + //Setup mocks. + this.testMethod.Setup(tm => tm.TestMethodName).Returns("DummyTestMethod"); + this.testMethod.Setup(tm => tm.Invoke(It.IsAny())).Returns(testResult); + + //Act. + TestFrameworkV2.TestResult[] results = + TestFrameworkV2.DataTestMethodAttribute.RunDataDrivenTest(this.testMethod.Object, + new TestFrameworkV2.DataRowAttribute[] {dataRowAttribute}); + + TestFrameworkV2.Assert.AreEqual(results[0].DisplayName, "DataRowTestDisplayName"); + } + + [TestFrameworkV1.TestMethod] + public void RunDataDrivenTestShouldFillInDisplayNameWithDataRowArgumentsIfNoDisplayNameIsProvided() + { + int dummyIntData = 2; + string dummyStringData = "DummyString"; + TestFrameworkV2.DataRowAttribute dataRowAttribute = new TestFrameworkV2.DataRowAttribute(dummyIntData, + dummyStringData); + + TestFrameworkV2.TestResult testResult = new TestFrameworkV2.TestResult(); + + //Setup mocks. + this.testMethod.Setup(tm => tm.TestMethodName).Returns("DummyTestMethod"); + this.testMethod.Setup(tm => tm.Invoke(It.IsAny())).Returns(testResult); + + //Act. + TestFrameworkV2.TestResult[] results = + TestFrameworkV2.DataTestMethodAttribute.RunDataDrivenTest(this.testMethod.Object, + new TestFrameworkV2.DataRowAttribute[] {dataRowAttribute}); + + TestFrameworkV2.Assert.AreEqual(results[0].DisplayName, "DummyTestMethod (2,DummyString)"); + } + } +} diff --git a/test/UnitTests/UnitTestFramework.Tests/UnitTestFramework.Tests.csproj b/test/UnitTests/UnitTestFramework.Tests/UnitTestFramework.Tests.csproj index 1bb039fbbe..47da3fc922 100644 --- a/test/UnitTests/UnitTestFramework.Tests/UnitTestFramework.Tests.csproj +++ b/test/UnitTests/UnitTestFramework.Tests/UnitTestFramework.Tests.csproj @@ -15,6 +15,14 @@ UnitTest + + $(TestFxRoot)packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll + True + + + $(TestFxRoot)packages\Moq.4.5.21\lib\net45\Moq.dll + True + @@ -34,10 +42,14 @@ + + + + \ No newline at end of file diff --git a/test/UnitTests/UnitTestFramework.Tests/packages.config b/test/UnitTests/UnitTestFramework.Tests/packages.config new file mode 100644 index 0000000000..fa422284e0 --- /dev/null +++ b/test/UnitTests/UnitTestFramework.Tests/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file