我有一个简单的问题。我的一个常见类方法生成了一个参数列表,我想将每个参数consistently设置为我的NUnit测试的参数。我阅读了一些有关TestCaseSource属性的文档,但无法弄清楚如何实现。例如,我的方法返回列表中如何将它们分别放入我的测试中,其中包含“ 1”,“ 2”,“ 3”,“ 4”。谢谢!
这是我的返回列表的方法:
public static List<string> TestCombinationsProvider()
{
List<string> resultList = new List<string>();
List<string> parametersList = new List<string>();
foreach (var item in ReturnDynamicPararmetersEntityProperties())
{
parametersList.Add(item.Name);
}
for (int i = 0; i < parametersList.Count; i++)
{
for (int j = i + 1; j < parametersList.Count; j++)
{
resultList.Add(parametersList[i] + " AND " + parametersList[j]);
}
}
return resultList;
}
和空的Nunit测试:
[Test]
[TestCaseSource("")]
public void Test1()
{
}
我想对列表中的每一行进行测试
文档非常清楚。除了返回List<string>
,您还需要返回一个测试用例列表,例如通过直接使用IEnumerable<TestCaseData>
:
public static IEnumerable<TestCaseData> TestCombinationsProvider()
{
List<string> resultList = new List<string>();
List<string> parametersList = new List<string>();
foreach (var item in ReturnDynamicPararmetersEntityProperties())
{
parametersList.Add(item.Name);
}
for (int i = 0; i < parametersList.Count; i++)
{
for (int j = i + 1; j < parametersList.Count; j++)
{
yield return new TestCaseData(parametersList[i] + " AND " + parametersList[j]);
}
}
}
然后装饰您的实际测试方法:
[Test]
[TestCaseSource(nameof(TestCombinationsProvider))]
public void Test1(string p)
{
}