当前位置:首页 > 全部子站 > IT > 水平考试

Nunit单元测试演练

来源:长理培训发布时间:2017-11-26 11:35:59

   学以致用,单元测试的工具越来越多,可是想找一篇如何单元测试的文章却很难。所以偶来写一点自己的心得,也是一步步摸索着。
  先从测试一个方法开始,偶随便找了一个小算法。这个方法看来正合适:不能太简单,比如一加一等于二;也不能太复杂,比如牵涉到数据库操作。
  这个算法的功能是取得小于Max的N个随机不重复正整数,代码如下:
  Code
  public static List GetRandomNum(int Max, int N)
  {
  List Source = new List();
  List Result = new List();
  for (int i = 0; i < Max; i++) Source.Add(i + 1);
  for (int n = 0; n < N; n++)
  {
  int r = new Random().Next(0, Source.Count);
  Result.Add(Source[r]); Source.RemoveAt(r);
  }
  Result.Sort();
  return Result;
  }
  算法很好理解。好久前写的,现在翻出来,一眼就看出有问题。不过有点问题正好,看看单元测试能否找出来。
  先添一个项目,引用NUnit.Framework,装好NUnit后在Net组件里有,免安装版的在解压后的目录里找。
  新建一个Public类用于测试,叫Test,生成随机数的方法的类叫Program。现在无所谓,正式项目里命名得规范一点。Test类加 [TestFixture]特性,添加一个Public函数叫做TestGetRandomNum,加上[Test]特性,这样NUnit就能认出这个方法是用于测试的方法了。还给该函数加了一个[Category("GetRandomNum")],因为一个功能可能要写几个函数来测试,这个特性表明方法属于测试GetRandom的方法组。
  还有几个常用的特性: [TestFixtureUp] [TestFixtureDown] [TearDown] [Setup] [Ignore] [Explicit],据说以后了解这几个就差不多了。
  接着,第一个测试方法该测试什么呢?以偶写代码的一点经验,每个函数都会把参数验证放在前面,参数无效就不往下走了,抛异常什么的该干嘛干嘛,那测试也先从参数测起吧。现在分析一下参数异常下的输出:若N< 1,不管Max值多少都返回空的List;若N>=1,且Max=1,Max=1
  29 int[,] case3 = { { 1, 1 }, { 10, 10 } };
  30 for (int k = 0; k < 2; k++)
  31 {
  32 int Max = case3[k, 0];
  33 int N = case3[k, 1];
  34 List list = Program.GetRandomNum(Max, N);
  35 bool isMatch = true;
  36 for (int n = 0; n < list.Count; n++)
  37 {
  38 if (n != list[n]) { isMatch = false; break; }
  39 }
  40 if (isMatch && list.Count == N) result3++;
  41 }
  42
  43 Assert.AreEqual(result1, 6);
  44 Assert.AreEqual(result2, 5);
  45 Assert.AreEqual(result3, 2);
  46 }

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部