为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
繁星点点滴滴 2023-07-09 09:54:25
我尝试创建一个简单的测试用例,为将来读取数据做准备。但我不知道如何处理参数并正确使用它我尝试设置为对象,但我认为这可能不是正确的解决方案        [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;类型。
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

测试用例源的定义模式略有不同。假设您使用 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);

    }

}  

查看完整回答
反对 回复 2023-07-09
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您的GetDataString退货a List<Config>.


这意味着,带有 a 的测试方法[TestCaseSource("GetDataString")]将执行与列表中的项目一样多的次数,并且您的方法必须与项目类型匹配。


//// This one throws System.ArgumentException 

//[TestCaseSource("GetDataString")]

//public void TestMethod(List<Config> configs)

//{

//    Console.WriteLine("Config " + configs);

//}


// This one is ok

[TestCaseSource("GetDataString")]

public void TestMethod(Config config)

{

    Console.WriteLine(config);

}

如果您需要List<Config>在测试中获取实例,那么您的源必须返回一些包含列表项的集合。


查看完整回答
反对 回复 2023-07-09
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信