C语言之单元测试
在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进行引用,过程及效果如下图。
编写一段小例子:
在新建的类中编写以下代码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using NUnit.Framework; //添加对要测试代码的引用
- namespace MyFirstTest
- {
- /// <summary>
- /// 这是我第一个单元测试
- /// </summary>
- [TestFixture] //测试夹具,表明这个类包含测试代码
- public class Class1
- {
- public int Add(int m, int n)
- {
- return m + n;
- }
- }
- }
为了测试Add这个方法通不通,我们进行单元测试。
对着类名点击右键,出现灰色“创建单元测试”字样说明配置成功。
解决方案中右键-添加-新建项目-单元测试项目
效果图如下:
右键单元测试项目-添加-单元测试
返回非测试项目-类名,点击右键-创建单元测试。
选择自己要测试的方法,生成效果图如下。
在生成的代码中设置断点,在方法名处右击调试测试,查看此方法是否能通。
结束
到此单元测试完成,原理就是这样的,比较简单。在ITOO高校云平台中MVC框架分为客户端和服务端,客户端调用服务端的接口方法。单元测试能够很好地对其通不通进行测试。值得注意的一点是,在项目中大多数遇到配置文件,那么这时候就需要在单元测试项目下添加配置文件,将非测试项目下的配置文件的内容复制到此配置文件下,保证能够调用其中的服务,不会出错。
C语言之单元测试的更多相关文章
- Go 语言编写单元测试
吾尝终日而思矣,不如须臾之所学也:吾尝跂而望矣,不如登高之博见也.登高而招,臂非加长也,而见者远:顺风而呼,声非加疾也,而闻者彰.假舆马者,非利足也,而致千里:假舟楫者,非能水也,而绝江河.君子生非异 ...
- Golang 语言的单元测试和性能测试(也叫 压力测试)
Golang单元测试对文件名和方法名,参数都有很严格的要求. 例如: 1.文件名必须以xx_test.go命名 2.方法必须是Test[^a-z]开头(T必须大写),func TestXxx (t * ...
- Go语言基础单元测试示例
这个要熟悉原理,要能写.. 但现在..... 注意,没有main函数,以_test.go结尾,命令go test -v package main import ( "testing" ...
- Go语言单元测试与基准测试
目录 单元测试 概述 go test参数解读 单元测试日志 基准测试 基础测试基本使用 基准测试原理 自定义测试时间 测试内存 控制计时器 Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码 ...
- 《分布式对象存储》作者手把手教你写 GO 语言单元测试!
第一部分:如何写Go语言单元测试 Go语言内建了单元测试(Unit Test)框架.这是为了从语言层面规范写UT的方式. Go语言的命名规则会将以_test.go结尾的go文件视作单元测试代码. 当我 ...
- 如何在eclipse中通过Juit进行单元测试
1.什么是Junit Junit即单元测试,是JAVA语言的单元测试框架,是对程序的一个方法所进行的测试 一般都是由程序员自己通过Junit来进行测试,因此单元测试也叫程序员测试: 如果测试人员熟悉程 ...
- java如何使用JUnit进行单元测试
注:所有内容都是在eclipse上实现,关于eclipse的安装和jdk的安装配置,请看:http://www.cnblogs.com/fench/p/5914827.html 单元测试是什么? 百度 ...
- javascript单元测试工具
单元测试关注的是验证一个模块或一段代码的执行效果是否和设计或预期一样.有些开发人员认为,编写测试用例浪费时间而宁愿去编写新的模块.然而,在处理大型应用程序时,单元测试实际上会节省时间:它能帮助您跟踪问 ...
- 使用 JUnit 进行单元测试 - 教程
tanyuanji@126.com 版本历史 JUnit 该教程主要讲解 JUnit 4.x 版本的使用,以及如何在Eclipse IDE 中如何使用JUnit 目录 tanyuanji@126. ...
随机推荐
- BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
- [POI2011]Śmieci
[POI2011]Śmieci 题目大意: 一个\(n(n\le10^5)\)个点\(m(m\le10^6)\)条边的无向图,每条边有边权\(0/1\),试找出若干个环,使得每次翻转环上所有边的权值, ...
- 2d场景背景无限滚动
之前都是直接借用的DoTween插件,两个背景无限交替位置进行,还有就是三个背景在利用Trigger进行判断显示与否循环: 示例脚本: private List<RectTransform> ...
- 喵哈哈村的魔法考试 Round #21 (Div.2) 题解
$ \sum{i=0}^{n-1}\sum{j=i}^{n-1}\mid Ai - Aj \mid $ 小学生在上课 题目大意:给你一个正整数N,问你1 ~ (n-1) 所有在模N下的逆的和(只计算存 ...
- GemFire 入门篇2:GemFire 8.2 在CentOS & Mac OS X的安装步骤
GemFire目前已经开源,开源项目的主页:http://geode.incubator.apache.org/,商业版本的主页:https://pivotal.io/big-data/pivotal ...
- SLAM(二)----学习资料下载
有位师兄收集了很多slam的学习资料, 做的很赞, 放到了github上, 地址:https://github.com/liulinbo/slam.git ruben update 0823 2016 ...
- Installing Windows Features without Internet
To set the source file path for the sxs folder, complete these steps: Ensure you have the correct in ...
- 你的项目真的需要Session吗? redis保存session性能怎么样?
在web开发中,Session这个东西一直都很重要,至少伴随我10年之久, 前一段时间发生一个性能问题,因为Redis session 问题,后来想想 其实我的项目session 是不需要的. 先看看 ...
- Html5游戏框架createJS组件--EaselJS
CreateJS库是一款HTML5游戏开发的引擎,是一套可以构建丰富交互体验的HTML5游戏的开源工具包,旨在降低HTML5项目的开发难度和成本,让开发者以熟悉的方式打造更具现代感的网络交互体验. 掌 ...
- CS模式,客户端页面加载
public MainForm() { //1.初始化视图 InitializeComponent(); //2.加载程序 this.Load += new System.EventHandler(t ...