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