I have seen in a Microsoft video about Visual Studio update 2 regarding these attributes. However, I can't find any other information about them and can't get a project to build with them.
Does anyone know anything about these attributes or how to get them working?
[DataTestMethod]
[DataRow("a", "b")]
[DataRow(" ", "a")]
public void TestMethod1(string value1, string value2)
{
Assert.AreEqual(value1 + value2, string.Concat(value1, value2));
}
I know this is an old question, but there is now a good walkthrough published at https://blogs.msmvps.com/bsonnino/2017/03/18/parametrized-tests-with-ms-test/
In a nutshell, you will need to install
MSTest.TestFramework
andMSTest.TestAdapter
, and remove references toMicrosoft.VisualStudio.QualityTools.UnitTestFramework
. You can then indicate a parameterised test with the[DataTestMethod]
attribute, and can add your parameters using the[DataRow]
attribute, as per your example. The values from the[DataRow]
attribute will be passed to the test method in the order in which they are specified.Note that the values in the
[DataRow]
attribute must be primitives, so you can't use aDateTime
ordecimal
for example. If you want them, you will have to work around this limitation (e.g. instead of having aDateTime
parameter to represent a date, you could have three integer parameters representing year, month and day, and create theDateTime
within the test body).It appears this is only available within the unit testing project for WinRT/Metro and now with update 2, Windows Phone 8. It's a mystery to my why this is not available for all testing with mstest.
Finally, this feature has been added (still in pre-release) https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest-v2/
Basically, one has to do two things:
1) Install two NuGet packages (versions don't really matter, but this is what I have)
2) Remove the refenrece to the old test library, because it has the same attributes defined in the same namespaces - this was done to achieve backwards compatibility