在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. C语言---斐波那契问题

      最近学习了一个叫递归的概念,里面最著名的一个例子就是斐波那契问题,觉得很有意思,就来实现一下: 什么是斐波那契数列   斐波那契数列,又称黄金分割数列,值得这样一个数列:0.1.1.3.5.8.1 ...

  2. 4513: [Sdoi2016]储能表 数位DP

    国际惯例的题面: 听说这题的正解是找什么规律,数位DP是暴力......好的,我就写暴力了QAQ.我们令f[i][la][lb][lc]表示二进制从高到低考虑位数为i(最低位为1),是否顶n上界,是否 ...

  3. Asp.Net JsonResult重写

    在Json序列化工具中,Newtonsoft.Json 的工具包相对比较好用. 对于循环引用.序列化格式.时间格式等都提供了可配置. 如果想重写Mvc 自带 JsonResult 返回结果,提供了2中 ...

  4. Java并发(理论知识)—— 线程安全性

    1.什么是线程安全性                                                                                      当多个线 ...

  5. C#调试心经

    我们在做程序开发时,难免会遇到错误异常.如何快速地找到出错的地方.分析错误的原因以及找到解决问题的方案,是许多初级程序员困扰的问题,这也正是经验的宝贵之处.下面我将简单介绍在Visual Studio ...

  6. shell中空格的使用;空格替换;通配符

    测试: test $? -eq && echo "yes" || echo "no" 通配符: 通配符 ()*:0个或多个连续的字符 ()?:任 ...

  7. Go语言之高级篇beego框架之cookie与session

    1.cookie的用法 this.Ctx.SetCookie("name", name, maxage, "/") this.Ctx.SetCookie(&qu ...

  8. 微信小程序wxss的background本地图片问题

    在web 或者webapp开发中我们习惯了直接饮用本地图片做背景,例如 .aaa { background: url('img/1.png'); } 但是这种引用方式在微信小程序中是无法使用的,控制台 ...

  9. akka actors默认邮箱介绍

    1. UnboundedMailbox is the default unbounded MailboxType used by Akka Actors ”无界邮箱“ 是akka actors默认使用 ...

  10. 在Centos6或者7上安装Kafka最新版

    一.官网 http://kafka.apache.org/downloads.html 二.Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.K ...