电话:0731-83595998
导航

LinqtoObject在测试中的应用

来源: 2017-11-26 13:05

   .NET Framework 3.5中引入了一个新特性LINQ(集成语言查询),据说.NET Framework 3.5中很多特性都是为LINQ而服务的,例如Lambda表达式的支持,匿名类型,等等……这篇文章会讲述一个把Linq to Object应用于测试的例子。 
  前一阵子需要测试一个搜索在线会员的功能,如果一个用户是在线的,那么他所能够被搜索到的信息都会作为一条记录,保存在一个表中,主要的字段有5 个,也就是根据这5个字段的信息可以查询出用户想要的在线会员。一个简单的方案就是写一个比较复杂的存储过程,然后根据5个输入来查询出不同的结果,不过 DBA说在SQL SERVER中进行逻辑运算的性能不是很好,所以开发人员写了12条存储过程,分别对应不同的组合,那么对于我做集成测试来说,我起码要有12个测试方法对应这12条存储过程。同时我还要设计一定数量的测试数据,供我查询测试,而比较要命的是,这些测试数据随着我对这个功能的理解的深入,在不断地增加,结果就是如果我写第一个测试的时候,我准备的数据是30条,OK,测试通过; 等我写到第五个测试的时候,测试数据可能有40条了,当我用这40条测试数据重新指向第一个测试的时候,FAILED!!!这让人非常郁闷。所以我想到了能不能用round trip的方法来进行测试。做一个比喻,假如说我想证明WIN7的计算器程序是正确的,那么可以把相同的计算在WIN XP的计算器中跑一遍,如果两者结果一样,那么我可以认为WIN7的计算器程序也是正确的(如果XP的计算器有错怎么办?先别较真,有风险,但很小)。
  我的做法就是,准备一些数据,首先用SUT进行查询,然后用LINQ进行查询,如果两者查询结果一致,那么可以认为程序是正确的,否则就是两者之一存在问题。
  首先准备一些测试数据,保存为XML文件,第一方便对测试数据进行CRUD,第二可以用XmlSerializer把这些数据转换为对象,方便用LINQ查询。
  < ?xml version="1.0" encoding="utf-8" ?>
  
  
  
  1300010000
  北京市
  北京市
  18
  2
  true
  
  
  1300010002
  北京市
  北京市
  27
  2
  false
  
  
  1300010004
  广东省
  广州市
  45
  1
  true
  
  
  
  然后需要有一个类,利用XmlSerializer来反序列化这些测试数据
  [XmlRoot("OnlineFriends")]
  public class OnlineFriends
  {
  private bool IsEmpty = true;
  private static OnlineFriends fs = new OnlineFriends();
  private OnlineFriends()
  { }
  public static OnlineFriends Instance
  {
  get
  {
  if (fs.IsEmpty)
  {
  fs.Deserialize();
  }
  return fs;
  }
  }

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端