在ITOO高校云平台项目实践中,我们模板的模块因为在调别人的接口时出现了问题,为了弄明白是不是接口出了问题,就必须学会单元测试。

WHAT?

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

WHY?

为什么要编写单元测试?原因是单元测试有不少的优点,能够给我们的工作带来很大的帮助。单元测试的优点1.帮助开发人员编写代码,提升质量、减少bug。如果大家分析一下我们bug原因的构成,我想有会有一部分bug的原因是开发人员在编写工作代码的时候没有考虑到某些case或者边际条件。造成这种问题的原因很多,其中很重要的一个原因是我们对工作代码所要完成的功能思考不足,而编写单元测试,特别是先写单元测试再写工作代码就可以帮助开发人员思考编写的代码到底要实现哪些功能。例如实现一个简单的用户注册功能的业务类方法,用单元测试再写工作代码的方式来工作的话开发人员就会先考虑各种场景相关,例如正常注册、用户名重复、没有满足必要的填写内容......等等,之后就会编写相关的测试用例

HOW?

工具:

单元测试的工具可以用NUnit,下载地址:http://www.nunit.org/index.php?p=download

选择后缀名是.msi的文件下载即可。

下载之后双击程序根据提示进行安装,需要清楚自己的安装路径,后面需要用到。提示安装成功后,大家可以在所有程序中看到这个图标,点击红框中的图标打开这个软件,软件是具体使用和操作步骤在这里不做赘述,大家有兴趣可以自己学习。

配置:

打开VS,点击工具-自定义

点击菜单命令-上下文菜单,选择编辑器上下文菜单|代码窗口

将"创建单元测试"移动到“运行测试”菜单下面。

重启VS生效。

引用NUnit

在这里以一个详细的小例子给大家作为展示。

1、打开VS,新建一个测试项目

2、在新建的项目中添加引用

3、引用中浏览,根据安装NUnit中的路径,找到nunit.framework.dll进行引用,过程及效果如下图。

编写一段小例子:

在新建的类中编写以下代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using NUnit.Framework;            //添加对要测试代码的引用
  7. namespace MyFirstTest
  8. {
  9. /// <summary>
  10. /// 这是我第一个单元测试
  11. /// </summary>
  12. [TestFixture]             //测试夹具,表明这个类包含测试代码
  13. public class Class1
  14. {
  15. public int Add(int m, int n)
  16. {
  17. return m + n;
  18. }
  19. }
  20. }

为了测试Add这个方法通不通,我们进行单元测试。

对着类名点击右键,出现灰色“创建单元测试”字样说明配置成功。

解决方案中右键-添加-新建项目-单元测试项目

效果图如下:

右键单元测试项目-添加-单元测试

返回非测试项目-类名,点击右键-创建单元测试。

选择自己要测试的方法,生成效果图如下。

在生成的代码中设置断点,在方法名处右击调试测试,查看此方法是否能通。

结束

到此单元测试完成,原理就是这样的,比较简单。在ITOO高校云平台中MVC框架分为客户端和服务端,客户端调用服务端的接口方法。单元测试能够很好地对其通不通进行测试。值得注意的一点是,在项目中大多数遇到配置文件,那么这时候就需要在单元测试项目下添加配置文件,将非测试项目下的配置文件的内容复制到此配置文件下,保证能够调用其中的服务,不会出错。

C语言之单元测试的更多相关文章

  1. Go 语言编写单元测试

    吾尝终日而思矣,不如须臾之所学也:吾尝跂而望矣,不如登高之博见也.登高而招,臂非加长也,而见者远:顺风而呼,声非加疾也,而闻者彰.假舆马者,非利足也,而致千里:假舟楫者,非能水也,而绝江河.君子生非异 ...

  2. Golang 语言的单元测试和性能测试(也叫 压力测试)

    Golang单元测试对文件名和方法名,参数都有很严格的要求. 例如: 1.文件名必须以xx_test.go命名 2.方法必须是Test[^a-z]开头(T必须大写),func TestXxx (t * ...

  3. Go语言基础单元测试示例

    这个要熟悉原理,要能写.. 但现在..... 注意,没有main函数,以_test.go结尾,命令go test -v package main import ( "testing" ...

  4. Go语言单元测试与基准测试

    目录 单元测试 概述 go test参数解读 单元测试日志 基准测试 基础测试基本使用 基准测试原理 自定义测试时间 测试内存 控制计时器 Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码 ...

  5. 《分布式对象存储》作者手把手教你写 GO 语言单元测试!

    第一部分:如何写Go语言单元测试 Go语言内建了单元测试(Unit Test)框架.这是为了从语言层面规范写UT的方式. Go语言的命名规则会将以_test.go结尾的go文件视作单元测试代码. 当我 ...

  6. 如何在eclipse中通过Juit进行单元测试

    1.什么是Junit Junit即单元测试,是JAVA语言的单元测试框架,是对程序的一个方法所进行的测试 一般都是由程序员自己通过Junit来进行测试,因此单元测试也叫程序员测试: 如果测试人员熟悉程 ...

  7. java如何使用JUnit进行单元测试

    注:所有内容都是在eclipse上实现,关于eclipse的安装和jdk的安装配置,请看:http://www.cnblogs.com/fench/p/5914827.html 单元测试是什么? 百度 ...

  8. javascript单元测试工具

    单元测试关注的是验证一个模块或一段代码的执行效果是否和设计或预期一样.有些开发人员认为,编写测试用例浪费时间而宁愿去编写新的模块.然而,在处理大型应用程序时,单元测试实际上会节省时间:它能帮助您跟踪问 ...

  9. 使用 JUnit 进行单元测试 - 教程

    tanyuanji@126.com 版本历史 JUnit 该教程主要讲解 JUnit 4.x 版本的使用,以及如何在Eclipse IDE 中如何使用JUnit   目录 tanyuanji@126. ...

随机推荐

  1. BZOJ.2834.回家的路(最短路Dijkstra 拆点)

    题目链接 对于相邻的.处在同在一行或一列的车站连边,然后用dis[x][0/1](或者拆点)分别表示之前是从横边还是竖边到x的,跑最短路. 我选择拆点.. //13028kb 604ms #inclu ...

  2. [SRM577]BoardPainting

    题意:一个全白的网格,你要将一些格子涂黑,每次只能选一行或一列中的连续白格涂黑,问最小操作次数 先假装我们一次涂一个联通块,那么答案就是联通块个数,然后在这个基础上增加一些代价让方案变得合法 考虑这样 ...

  3. 给你的网站添加 console.js

    本文仅先给使用console调试的FE同学,如果你还不知道console是什么,或者还停留在alert阶段,那就不要浪费时间了,say bay bay! 你是否试程序的过程中用过console.log ...

  4. C# 8.0的新的using语法——Using declarations

    我们在代码中经常使用using保障非托管资源的释放 static void Main(string[] args) { using (var options = Parse(args)) { if ( ...

  5. nginx 负载均衡集群解决方案 healthcheck_nginx_upstreams模块测试 (二)

    在这里详细讲解healthcheck_nginx_upstreams模块中存在的bug,对于healthcheck_nginx_upstreams模块的安装和使用请阅读上一篇blog进行学习. 测试环 ...

  6. linux中apt-get和yum和wget的区别

    1.RedHat系列:Redhat.Centos.Fedora等   yum 2.Debian系列:Debian.Ubuntu等   apt-get wget类似迅雷

  7. NSURLSession 相关清单

    浅析 NSURLSession      http://boboshone.com/blog/2013/10/21/nsurlsession-tutorial/ 介绍整体流程结构. iOS NSURL ...

  8. Map和String类型之间的转换

    前提是String的格式是map或json类型的 public static void main(String[] args) { Map<String,Object> map = new ...

  9. 9.5 dubbo事件通知机制

    dubbo事件通知机制:http://dubbo.io/books/dubbo-user-book/demos/events-notify.html 一.使用方式 两个服务: DemoService: ...

  10. useradd 命令的常见用法

    在Linux系统中 useradd 是个很基本的命令,但是使用起来却很不直观.以至于在 Ubuntu 中居然添加了一个 adduser 命令来简化添加用户的操作.本文主要描述笔者在学习使用 usera ...