DataTestMethod
mstestのパラメーター化テストでDataRowにTupleを使用すると「error CS0182: 属性引数は、定数式、typeof 式、または属性パラメーター型の配列の作成式でなければなりません。」とエラーになる。
DataRowの代わりに、DynamicDataを使用してTupleを含むテストデーターを返すメソッドまたはプロパティを指定する。
UnitTest1.cs
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
namespace UnitTestProject1
{
[TestClass()]
public class UnitTest1
{
[DataTestMethod()]
[DataRow("text1", 1)]
[DataRow("text2", 2)]
public void DataRowTest(string text, int number)
{
var tuple = (text, number);
Assert.AreEqual(tuple.text, text);
Assert.AreEqual(tuple.number, number);
}
public static IEnumerable<object[]> GetDynamicDataTestData()
{
yield return new object[] { ("text1", 1), "text1", 1 };
yield return new object[] { ("text2", 2), "text2", 2 };
}
[DataTestMethod()]
[DynamicData(nameof(GetDynamicDataTestData), DynamicDataSourceType.Method)]
public void DynamicDataTest((string text, int number) tuple,
string text, int number)
{
Assert.AreEqual(tuple.text, text);
Assert.AreEqual(tuple.number, number);
}
}
}