写算法时大多依靠简单输入验证,经常遇到小范围输入正常,大范围或特殊情况输入结果错误的问题。所以写程序之前最好先想好几个特殊用例来测试,以验证算法是否正确。单元测试就是个不错的工具,而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 单元测试简单配置的更多相关文章

  1. 【OGG】OGG简单配置双向复制(三)

    [OGG]OGG简单配置双向复制(三) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O ...

  2. 小丁带你走进git世界一-git简单配置

    小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config  –global user.name BattleHeaer ...

  3. 以实际的WebGIS例子探讨Nginx的简单配置

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 以实际项目中的一个例子来详细讲解Nginx中的一般配置,其中涉 ...

  4. CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...

  5. ssm简单配置

    MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架. MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获. MyBatis 只使用简单的XML 和注解来配置和映射 ...

  6. 安装MariaDB和简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start maria ...

  7. BIND的进程一:DNS简单配置与的主从配置

    DNS的简单配置和DNS的主从配置   摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...

  8. 转-squid介绍及其简单配置

    本文原始出处:http://linuxme.blog.51cto.com/1850814/372960 1.Squid是什么? Squid中文权威指南:http://zyan.cc/book/squi ...

  9. Linux中vim的简单配置

    本文主要分享Linux中vim的简单配置 ★配置文件的位置     在目录/etc.下面,有个名为vimrc的文件,这就是系统中公共的vim配置文件,对所有用户都开放.而在每个用户的主目录下,都可以自 ...

随机推荐

  1. Java笔试题集锦

    Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?怎样实现? 答:MVC是Model-View-Controller的简写."Model" 代表的是应用的业务逻辑(通过J ...

  2. ios基金会-XCode温馨提示

    (一个)代号规格pragma mark 1.定义 #pragma 开头的代码是一条编译器指令,是一个特定于程序或编译器的指令. 不一定适用于其他编译器或其他环境.假设编译器不能识别该指令.则会将其忽略 ...

  3. 使用SoapUI 测试Web Service

    原文:使用SoapUI 测试Web Service 如何测试写好的Webservice?你当然可以写代码来测试,但还是太麻烦,你得花时间去学习各语言的关于Webservice调用的相关API.这里推荐 ...

  4. Spring IOC 之个性化定制the nature of a bean

    1.生命周期回调 为了影响容器管理的bean的生命周期,你可以实现Spring的InitializingBean和DisposableBean接口.容器首先调用afterPropertiesSet() ...

  5. vim的复制粘贴小结

    vim帮助文档里与粘贴板有关的内容如下: vim有12个粘贴板,分别是0.1.2.….9.a.“.+:用:reg命令可以查看各个粘贴板里的内容.在vim中简单用y只是复制到“(双引号)粘贴板里,同样用 ...

  6. Spring之单元测试

    引言 是否在程序运行时使用单元测试是衡量一个程序员素质的一个重要指标.使用单元测试既可以让我检查程序逻辑的正确性还可以让我们减少程序测试的BUG,便于调试可以提高我们写程序的效率.以前我们做单元测试的 ...

  7. leetcode N-QueensII

    题目和上一题一样,就是要求输出有多少种结果.最直接的就是,只要在上一题的代码return ans.size();就可以了.果然也是AC了. 然后我翻看了几种别人写的,暂时还没有找到复杂度可以比上一题降 ...

  8. javascript 学习总结(二)Array数组

    1.数组常用方法 var colors = ["red", "blue", "green"]; //creates an array wit ...

  9. CF:Problem 427C - Checkposts良好的沟通 Tarjan算法

    tarjan算法的第一个问题 喷我的脸....手写叠式开成BOOL,我一直在找错了... #include<cstdio> #include<cstring> #include ...

  10. 给Angularjs配上Requirejs

    给Angularjs配上Requirejs 需要考虑的事情: 1.js.css.template都按需加载,js主要就controller: * js和css都可以用requirejs和它的插件解决, ...