VS 2012 单元测试简单配置
写算法时大多依靠简单输入验证,经常遇到小范围输入正常,大范围或特殊情况输入结果错误的问题。所以写程序之前最好先想好几个特殊用例来测试,以验证算法是否正确。单元测试就是个不错的工具,而VS 2012提供了很方便的单元测试功能。
首先创建需要测试的C++项目,如果已有项目,可以跳过这个步骤。然后新建两个文件algs4.h和main.cpp,代码如下:
algs4.h
int add(int a, int b)
{
return a+b;
} int minus(int a, int b)
{
return a-b;
}
main.cpp
#include "algs4.h" int main()
{
return 0;
}
待测试项目创建完成。接下来需要在当前解决方案中新建本机单元测试项目,如下图:

完成项目创建之后,为了让测试方法能够访问待测试的代码,需要在测试项目中添加待测试项目的引用。右击测试项目,在属性对话框里找到VC++目录->包含目录

编辑包含目录项,在弹出的对话框中添加待测试项目的文件目录:

完成后就可以在测试项目中引入待测试函数。简单的测试代码如下:
#include "stdafx.h"
#include "CppUnitTest.h"
#include "algs4.h" using namespaceMicrosoft::VisualStudio::CppUnitTestFramework; namespace UnitTestAlgs4
{
TEST_CLASS(UnitTest1)
{
public: TEST_METHOD(TestMethod1)
{
//TODO: 在此输入测试代码
Assert::AreEqual(20,add(10,10));
}
};
}
运行测试时,可以在菜单栏找到测试->运行->所有测试,或者直接右击,选择运行测试

测试结果可以在测试资源管理器中查看:

不过以上的配置只能测试头文件中的代码,而大多情况下头文件中并不包括函数的实现,这时,测试项目仅包含待测试项目的文件目录是不够的,还需要添加对.obj文件的引用。
假设待测试项目的文件及代码如下:
algs4.h
int add(int a, int b);
int minus(int a, int b);
algs4.cpp
#include "algs4.h" int add(int a, int b)
{
return a+b;
} int minus(int a, int b)
{
return a-b;
}
main.cpp与上面的一致。
打开测试项目的属性对话框,修改链接器的常规->附加库目录和输入->附加依赖项两个属性:

向附加库目录中添加待测试函数的.obj文件目录
如E:\VS2012\Algorithms4\Algorithms4\Debug
向附加依赖项中仅添加待测试函数的.obj文件名,这里是algs4.obj。
设置好后就能够正常运行测试。
另外,在测试资源管理器中右击测试名,可以分析测试代码的覆盖率。由于当前测试代码没有添加对minus的测试,所以它的已覆盖率是0。覆盖率测试还可以测试条件语句等分支语句的覆盖情况。

VS 2012 单元测试简单配置的更多相关文章
- 【OGG】OGG简单配置双向复制(三)
[OGG]OGG简单配置双向复制(三) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O ...
- 小丁带你走进git世界一-git简单配置
小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config –global user.name BattleHeaer ...
- 以实际的WebGIS例子探讨Nginx的简单配置
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 以实际项目中的一个例子来详细讲解Nginx中的一般配置,其中涉 ...
- CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置
1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...
- ssm简单配置
MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架. MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获. MyBatis 只使用简单的XML 和注解来配置和映射 ...
- 安装MariaDB和简单配置
1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start maria ...
- BIND的进程一:DNS简单配置与的主从配置
DNS的简单配置和DNS的主从配置 摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...
- 转-squid介绍及其简单配置
本文原始出处:http://linuxme.blog.51cto.com/1850814/372960 1.Squid是什么? Squid中文权威指南:http://zyan.cc/book/squi ...
- Linux中vim的简单配置
本文主要分享Linux中vim的简单配置 ★配置文件的位置 在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...
随机推荐
- javascript日历插件
原文:javascript日历插件 javascript日历插件 最近在尝试着写javascript日历插件,所以也到github上看国外人日历源码,或者国内人写的好点的,也在研究点,虽然看到网上有一 ...
- ichartjs 使用BUG,assign_scale:true 解决
今天纯属灌水,好久没灌水的. 最近使用了flotr2 和 ichartjs进行canvas图标的开发,都不能满足需求. 没办法,先将就用用吧.然后,既然其他大神推荐使用ichartjs,为了统一,我也 ...
- 快速构建Windows 8风格应用12-SearchContract概述及原理
原文:快速构建Windows 8风格应用12-SearchContract概述及原理 本篇博文主要介绍Search Contract概述.Search Contract面板结构剖析.Search Co ...
- 重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图
原文:重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 Web ...
- flash导入图片缩放后出现毛边、失真、锯齿、文字模糊不清晰的情况
原因: 1.flash的性能非常差,这就不得不让它做大量的优化. 2.图片缩放,目前业界有多种算法,画质越好的算法,计算量越大. 3.flash优化了图片缩放,使用了质量非常低的缩放算法.这个做法,保 ...
- 数以百万计美元的融资YO是什么东东?
给自己做个广告哈,新栏目"面试"已经推出,回复"面试"就可以获取. 这两天最火的应用是什么.非yo莫属,堪称史上最简单的社交应用,仅仅能向好友发送一个yo. 出 ...
- jQuery.form Ajax无刷新上传错误 (jQuery.handleError is not a function) 解决方案
今天,随着ajaxfileupload时间firebug财报显示,"jQuery.handleError is not a function"错误.因为一旦使用jQuery.for ...
- HTML 5 在Web SQL 使用演示样本
Web sql 这是一个模拟数据库浏览器.可以使用JS操作SQL完成数据读取和写入,但是这件事情并不多,现在支持的浏览器,而其W3C规格已经停止支持.外形似它的前景不是很亮. W3C 规范:http: ...
- Linux内核策略介绍
Linux内核策略介绍学习笔记 主要内容 硬件 策略 CPU 进程调度.系统调用.中断 内存 内存管理 外存 文件IO 网络 协议栈 其他 时间管理 进程调度 内核的运行时间 系统启动.中断发 ...
- 使用pager进行分页
pager jar网址:http://java2s.com/Code/Jar/t/Downloadtaglibspagejar.htm package com.binary.entity; impor ...