有没有解决方案来处理 TestCaseSource 的 dataType ?

我尝试创建一个简单的测试用例,为将来读取数据做准备。但我不知道如何处理参数并正确使用它

我尝试设置为对象,但我认为这可能不是正确的解决方案

        [TestCaseSource("GetDataString")]

        public void TestMethod2(object configs)

        {



        }

这是源代码


namespace SAP

{

    [TestFixture]

    public class Scenario1

    {


        // This one Give System.ArgumentException 

        [TestCaseSource("GetDataString")]

        public void TestMethod(List<Config> configs)

        {

            Console.WriteLine("Config " + configs);


        }

        // This one can handle an Exception

        [TestCaseSource("GetDataString")]

        public void TestMethod2(object configs)

        {



        }


        public static List<Config> GetDataString()

        {

            var datas = new List<Config>();             

            datas.Add(new Config("Nick", "Coldson"));

            return datas;

        }

    }


    public  class Config

    {

        public string NickName { get; set; }

        public string Name { get; set; }


        public Config(string nickname, string name)

        {

            NickName = nickname;

            Name = name;

        }


    }


}

这是错误消息


System.ArgumentException:&ldquo;SAP.Config&rdquo;类型的对象无法转换为&ldquo;System.Collections.Generic.List`1[SAP.Config]&rdquo;类型。


繁星点点滴滴
浏览 97回答 2
2回答

浮云间

测试用例源的定义模式略有不同。假设您使用 nunit 3 它应该是:[TestCaseSource(typeof(MyTestData), nameof(GetDataString))]public void TestMethod2(List<Config> configs){   ...}public class MyTestData{    public static IEnumerable GetDataString()    {        var datas = new List<Config>();                     datas.Add(new Config("Nick", "Coldson"));        return new TestCaseData(datas);    }}  

牧羊人nacy

您的GetDataString退货a List<Config>.这意味着,带有 a 的测试方法[TestCaseSource("GetDataString")]将执行与列表中的项目一样多的次数,并且您的方法必须与项目类型匹配。//// This one throws System.ArgumentException&nbsp;//[TestCaseSource("GetDataString")]//public void TestMethod(List<Config> configs)//{//&nbsp; &nbsp; Console.WriteLine("Config " + configs);//}// This one is ok[TestCaseSource("GetDataString")]public void TestMethod(Config config){&nbsp; &nbsp; Console.WriteLine(config);}如果您需要List<Config>在测试中获取实例,那么您的源必须返回一些包含列表项的集合。
打开App,查看更多内容
随时随地看视频慕课网APP