何为单元测试

绝大多数的软件都是由多人合作完成的,大家的工作相互有依赖关系。软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解其他模块的变化。如何能让自己负责的模块功能的定义尽量的明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方案。

首先是Visual Studio 2015的安装

Visual Studio是微软开发的一套基于组件的软件开发工具,目前最新的版本是2015。

  • 在 I Tell you 网站下载Visual Studio 2015 社区版。网址:http://www.itellyou.cn/。

  • 待下载完毕之后解压,一共包含四个文件或文件夹。双击.exe文件开始安装。

  • 开始安装界面:

  • 选择安装位置和安装类型:这里安装位置选择在:D:\Program Files (x86)\Microsoft Visual Studio 14.0目录下,安装类型选择自定义。点击下一步。

  • 根据跟人情况选择需要安装的功能,由于作业需要,这里编程语言需选择Visual C++。点击下一步。

  • 预览所选择的功能。点击安装。

  • 等待安装完成。

  • 安装完成,需重启电脑。

至此,已经完成Visual Studio 2015的安装。

  • 简单的单元测试
  • 在Visual Studio 2015中建立项目

新建一个“Win 32控制台应用程序”,命名为“UnitTest”。

文件->新建->项目:

已安装->Visual C++ ->Win32 控制台应用程序->名称:“UnitTest”。点击确定。

Win32 应用程序向导:点击写一步。

Win32 应用程序向导:点击完成。

添加头文件和源文件。并编写代码。

头文件头文件上右击->添加。

添加头文件:AddFunc.h。

添加源文件:AddFunc.cpp。

同方法,添加头文件:SubFunc.h和源文件SuaFunc.cpp、main.cpp。

头文件AddFunc.h代码:

//AddFunc.h
#ifndef _ADD_FUNC_H_
#define _ADD_FUNC_H_ int AddFunc(int x, int y); #endif

源文件AddFunc.cpp代码:

//AddFunc.cpp
#include "Addfunc.h" int AddFunc(int x, int y)
{
return x + y;
}

头文件SubFunc.h代码:

//SubFunc.h
#ifndef _SUB_FUNC_H_
#define _SUB_FUNC_H_ int SubFunc(int x, int y); #endif

源文件SubFunc.cpp代码:

//SuaFunc.cpp
#include "SubFunc.h" int SubFunc(int x, int y)
{
return x - y;
}

编译链接此工程,生成一序列的obj文件。并对各个函数进行单元测试。

  • 建立单元测试项目

选择已安装->Visual C++ ->测试->托管测试项目“UnitTest_1”。点击确认。

建立单元测试项目后的解决方案资源管理器:

单元测试项目中的源文件“UnitTest”中的代码:

添加加法的头文件“AddFunc.h”。

更改测试方法的函数名称“void TestMethod1()”为“void testMethodAddFunc()”,并添加代码:

            int nx = ,ny = ,nExpect = ;
int nReal = AddFunc(nx,ny);
Assert::AreEqual(nReal, nExpect);

把加法的obj文件包含进来。

在测试工程上右击->属性->配置属性->连接器->输入->添加依赖项右面下箭头->编辑。

输入加法的obj的目录:..\UnitTest\Debug\AddFunc.obj,点击确定。

  • 运行测试项目

测试项目“UnitTest_1”上右击->属性->配置属性->常规->公共语言运行时支持。选择如下。单击确定。

打开测试资源管理窗口:

测试资源管理器:

在测试资源管理器窗口点击全部运行。运行结果如下:若单元测试的结果正确,则单元测试的方法左面会提示一个绿色的勾,否则提示一个红色的叉。

同方法,添加减法的单元测试方法。

附:函数Assert::AreEqual()的功能是验证指定的值是否相等。详细方法说明参见:https://msdn.microsoft.com/zh-cn/library/microsoft.visualstudio.testtools.unittesting.assert.areequal.aspx

最新文章

  1. ASP .NET MVC 之Entity Framework入门教程及源码
  2. [LintCode] Trapping Rain Water 收集雨水
  3. jQuery 操作复选框(checkbox) attr checked不起作用
  4. JavaScript Patterns 4.5 Immediate Functions
  5. Perl中的匹配(六)
  6. Hibernate理论
  7. Centos7升级gcc学习笔记
  8. opencv绘制灰度直方图
  9. VS2005 VS2008 Manifest 配置问题总结
  10. HDU 2013 蟠桃记
  11. VMware下打开Chrome OS遇到没有网络连接可用
  12. [Unity 3D] Unity 3D 性能优化(二)
  13. none,hidden和opacity="0"设置元素不可见的区别
  14. node03
  15. 安装zabbix 遇到的一些问题
  16. 如何确定Isilon里的磁盘是多大的?
  17. C++ code:位操作实例(bit operation example)
  18. spring-jar包及架构介绍
  19. 李洪强iOS经典面试题
  20. sprint2(第四天)

热门文章

  1. 《python源代码剖析》笔记 python环境初始化
  2. ThreadLocal解决SimpleDateFormat多线程安全问题中遇到的困惑
  3. testNG参数化
  4. JAVA 对基础知识的加强
  5. HDU 1421 搬寝室(经典DP,值得经常回顾)
  6. php判断一个数组是否为另一个数组子集的方法
  7. TensorFlow(1):使用Docker镜像搭建TensorFlow环境
  8. Delphi 7~XE系列升级安装Indy10.6
  9. 7、mysql高级特性
  10. P3302 [SDOI2013]森林