NUnit TestCaseSource如何从列表中设置参数

问题描述 投票:0回答:1

我有一个简单的问题。我的一个常见类方法生成了一个参数列表,我想将每个参数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()
    {

    }

我想对列表中的每一行进行测试

c# nunit
1个回答
0
投票

文档非常清楚。除了返回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)
{

}
© www.soinside.com 2019 - 2024. All rights reserved.