当前位置:编程学习 > C#/ASP.NET >>

assert单元测试。这个类怎么写单元测试用例和方法哈

这是需要测试单元测试的方法       
/// <summary>
        /// 根据Datatable转化为实体集合 
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>       
        /// <param name="table">数据参数</param>
        /// <returns></returns>
        public static IList<T> ToListByProperty<T>( DataTable table)
        {
            IList<T> list = new List<T>();
            //循环转化为实体类     
            try
            {
                foreach (DataRow dr in table.Rows)
                {
                    T entity = Activator.CreateInstance<T>();
                    PropertyInfo[] properties = entity.GetType().GetProperties();
                    foreach (PropertyInfo pro in properties)
                    {
                        string name = pro.Name;
                        if (!table.Columns.Contains(name)) continue;
                        SetProperty(entity, name, dr[name]);
                    }
                    list.Add(entity);
                }
            }
            catch (Exception e)
            {
                e.GetType();
                return null;
            }
            return list; 
        } 

哪位大人物指导下。测试方法怎么写哈。怎么断言 --------------------编程问答-------------------- 就传一个DataTable的数据啊  --------------------编程问答-------------------- 首先要把测试搞清楚,断言的目的就是测试一个结果,如同一个加法函数,如果你传1+1,返回值不等于2就断言失败。
而你的这个一个就应该是多个断言,如Null(DbNull.Value)是否成功处理、原始值是否等于转换后的值,是不是能够进行类型自动转换如Int64转为Int32,行总数是不是等于List的Count、列名的大小写问题是否能够转换为正确的属性名称(部份数据库列名的大小与写的SQL有关,而有的返回列名都是大写)。不处理就无法进行映射,同一列名,若存在多个属性或字段<转为大写或小写后均相等>的映射顺序,还是全部映射。

所以要怎么断言就得看你要比较什么结果了,理想的是各种可能均有比较,不过测试代码就会多一些。当然有些已是固化的非主观不可能发生的就不用写了。 --------------------编程问答-------------------- 2楼的能给我写个是不是能够进行类型自动转换如Int64转为Int32的测试方法吗?理论我知道。就是实际怎么写搞不清楚。比如我写
 string sql = "SELECT PayMentID,GroupID  FROM dbo.CSD_ORD_PayMent WHERE  GroupID=@GroupID ";
            List<NameValue> paras = new List<NameValue>();
            paras.Add(new NameValue { Name = "GroupID", Value = "20121220231512123", dataType = typeof(String) });
            
            TestSetParameter test = new TestSetParameter();
            table = test.GetDataTable(sql, paras);// TODO: 初始化为适当的值
            Assert.AreEqual(497845, ConvertHelper.ToListByProperty<PayMent>(table)[0].PayMentID);
            Assert.AreEqual(497846, ConvertHelper.ToListByProperty<PayMent>(table)[1].PayMentID);


其实我是想比较实际的PayMent 和返回的PayMent实体比较。虽然类型和数据都一样。。但还是断言失败。只能比较其中的一个字段。达不到想要的结果
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,