单元测试之道(使用NUnit)

  首先来看下面几个场景你是否熟悉

  1、你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的按钮,顿时你刚刚的轻松感烟消云散:系统无法正常工作,你想读的数据显示不出来,你想存的东西也送不到数据库……于是,你再次回到IDE里,设断点、调试、一层一层跟踪,当你精疲力尽终于将数据送到数据库里,你又发现了其它问题,于是你继续设断点、调试、编译、调试……

  2、你狂躁地敲击着键盘和鼠标,咒骂着不断出现的bug:啊?这里怎么没返回值啊!哎?这里不该是0啊!不对啊,这里怎么没数据……你永远不知道还有多少bug,你也永远不知道你的改动会不会引入其它bug——这里有几十个甚至上百个类,几百几千个方法!我不能都照顾到啊!你感觉bugs像敲击鼹鼠游戏中的鼹鼠:打下了这个,另一个又从其它洞口露出头来……

  3、也许是毕业答辩的演示,也许是客户的审查,你小心地打开自己要演示的系统,进行着预定的操作,忽然,有个功能不能正常运行,你大汗淋漓,在答辩老师或者客户质疑且不满的目光下你试了又试,但还是于事无补……于是,答辩老师可能扭头便走,客户可能愤然离去,然后离去的还有你的学位证和项目奖金。当后来你检查代码时,发现这一切竟然只是因为一个底层工具类中一个方法输出结果为空。

  如果你觉得上面的场景令你似曾相识甚至痛心疾首,那么你应该看完这篇文章。

  什么是单元测试

      单元测试(Unit Test)的一个测试用例(Test Case)是一小段代码,这段代码用于测试一个小的程序功能(一般是一个方法或相关的几个方法)行为是否正常。下面给出一个实际项目中单元测试用例的代码,大家可以不用深究这段代码中的细节,这里贴这段代码只是给大家一个直观的感觉。

 1 /// 
2 /// 测试基本的添加及删除角色是否正确
3 ///
4 [Test]
5 public void TestAddAndRemoveRole()
6 {
7 IRoleServices roleServ = UnityHelper.CreateContainer().Resolve<IRoleServices>();
8 IRoleRepository roleRep = UnityHelper.CreateContainer().Resolve<IRoleRepository>();
9 Assert.IsNotNull(roleServ);
10 Assert.IsNotNull(roleRep);
11
12 String timeStamp = DateTime.Now.ToString();
13 RoleDto newRole = new RoleDto()
14 {
15 Name = "测试角色" + timeStamp,
16 Desciption = "此角色仅供测试使用",
17 };
18 roleServ.AddRole(newRole);
19
20 RoleDto addedRole = roleRep.GetRoleByName("测试角色" + timeStamp);
21 Assert.AreNotEqual(-1, addedRole.ID);//确认新角色添加成功
22
23 roleServ.RemoveRole(addedRole.ID);
24 Assert.AreEqual(-1, roleRep.GetRoleByName("测试角色" + timeStamp).ID);//确认刚才添加的角色删除成功
25 }

NET技术单元测试之道(使用NUnit),转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。