最近看《软件项目成功之道》,书中无数次提及到“单元测试”对于项目成败的重要性,看到同事将CppUTest用于Linux动态库测试,于是在VC++6.0环境下搭建一个基于CppUTest的单元测试环境,用于测试工作中编写的C函数。下面就来介绍整个搭建过程,整个过程分为四步:前期准备——需要的库;环境配置——VC++6.0配置;实例演示——可复现的Demo;拓展——后续学习资料。

  一、前期准备;

  • CppUTest下载

    • 官网:http://cpputest.github.io/
    • 历史版本:https://github.com/cpputest/cpputest/releases

  在我的项目中,采用的是老版本V3.3;

  二、环境配置;

  1、利用VC++6.0,新建一个用于测试的工程CppUTestLearning;

  2、选择Project——>Settings,配置Code Generation,选择“Debug Multithreaded DLL”;

  

  3、配置链接库,其中CppUTest.lib是测试框架的核心,winmm.lib用于解决问题“error LNK2001: unresolved external symbol __imp__timeGetTime”;

  

  4、编译时,需要忽略“libcmtd.lib”这个库;Project——>Setting——>Link,选择Category->Input,在Ignore libraries中填入libcmtd;

  

  5、设置CppUTest的公共头文件存放路径,选择Tools——>Options——Directories,添加\CPPUTEST和\PLATFORMS\VISUALCPP两个目录;

  

  三、实例演示

  1、编写用于测试的开发程序MyProgram.h和MyProgram.c

MyProgram.h

#ifndef MY_PROGRAM_H
#define MY_PROGRAM_H
/*
* Description: 整数加法函数
* Function: add
* Parameter: first --[in] 第一个参数
* second --[in] 第二参数
*
* Return: 执行后的结果
*
* Other:
*
*/
int add(int first,int second);
#endif

MyProgram.c

#include "MyProgram.h"

/*
* Description: 整数加法函数
* Function: add
* Parameter: first --[in] 第一个参数
* second --[in] 第二参数
*
* Return: 执行后的结果
*
* Other:
*
*/
int add(int first,int second)
{
return first+second;
}

  2、搭建测试环境,创建文件MainTest.cpp和FirstTestGroup.cpp文件,其中MainTest.cpp启动“入口函数”的作用,而FirstTestGroup.cpp即一个单元测试组;

MainTest.cpp

#include "D:\\cpputest-3.3\\include\\CppUTest\\CommandLineTestRunner.h"
int main(int ac, const char** av)
{
/* These checks are here to make sure assertions outside test runs don't crash */
CHECK(true);
LONGS_EQUAL(1, 1);
return CommandLineTestRunner::RunAllTests(ac, av);
}

FirstTestGroup.cpp

#include "D:\\cpputest-3.3\\include\\CppUTest\\TestHarness.h"
#include "D:\\cpputest-3.3\\include\\CppUTest\\TestOutput.h"
extern "C"{
#include "MyProgram.h"
} TEST_GROUP(MyProgram)
{
}; TEST(MyProgram, add)
{
LONGS_EQUAL(2,add(1,2));
}

  3、进行编译,链接,然后执行,其结果如图

  四、拓展

  上述实例,仅演示了整数类型数据比对LONGS_EQUAL,更多数据类型数据比对参见README_CppUTest.txt。

VC++6.0 配置CppUTest测试环境的更多相关文章

  1. VC 6中配置OpenGL开发环境

    2010,2012中配置类似 http://hi.baidu.com/yanzi52351/item/f9a600dffa4caa4ddcf9be1d VC 6中配置OpenGL开发环境 这里,我习惯 ...

  2. Tomcat环境配置部署测试环境及架构

    Tomcat环境配置已经在前面介绍过了,这边就为童鞋们介绍下对于Tomcat的架构是怎么样的! Tomcat的架构包含(bin.conf.lib.logs.temp.wenapps.work)等文件夹 ...

  3. ubuntu18+gtx1060 +cuda9+cudnn-v7+opencv3.1.0 配置深度学习环境

    将笔记本的ubuntu系统更新到18版本后重新配置深度学习环境,在此记载方便日后参考 具体配置为 Ubuntu18.04+gtx1060+opencv-3.1 第1步 安装依赖包 sudo apt-g ...

  4. Eclipse Maven profiles 多环境配置,测试环境与开发环境分开打包

    1.将开发环境.测试环境.生产环境的配置文件分开存放,如下图: 2.在Maven中配置不同的环境打包配置文件的路径,配置如下: <profiles> <profile> < ...

  5. webpack vue-cli2 配置打包测试环境

    目前vue-cli2上原配置是只有开发环境dev和线上环境prod的配置,但是我们实际场景上还有很多需要一个测试环境test,下面就是对测试环境的配置,将测试环境和线上环境的打包代码分开就不需要切来切 ...

  6. 11.2.0.4 RAC测试环境修改时区

    当前问题: 系统时区修改后,集群数据库各个日志发现显示的还是之前时区的时间. 依据Linux (RHEL)修改时区更改了系统的时区后,集群数据库的各个日志还是显示之前的时区时间. 查找MOS资料 Ho ...

  7. Netbeans 8.0配置Python开发环境

    1. 菜单栏:工具->插件->设置->添加 配置如下信息: http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/last ...

  8. robotframework + python2.7.9 + selenium 2.44.0 + selenium2library1.7 测试环境搭建成功!

    真心不容易呀!开源软件搭建挺麻烦的,各种组件未必要使用最新的版本:有些最新版本反而不兼容.需要仔细看官方说明书来进行搭建(官方网站都是英文),所以闹得重新安装了几次. 先上测试用例通过的图:

  9. win10+VS2015+opencv3.4.0配置方法

    win10+VS2015+opencv3.4.0配置方法 操作环境: windows10 64位opencv 3.4.0:https://opencv.org/releases.html(选择open ...

随机推荐

  1. HomeBrew安装和卸载

    HomeBrew——OS X 不可或缺的套件管理器 1.安装,一行代码即可. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercon ...

  2. FTP弱口令猜解【python脚本】

    ftp弱口令猜解 python脚本: #! /usr/bin/env python # _*_ coding:utf-8 _*_ import ftplib,time username_list=[' ...

  3. PHPMyAdmin弱口令猜解【Python脚本】

    PHPMyAdmin弱口令猜解 测试截图: 代码片段 #! /usr/bin/env python # _*_ coding:utf-8 _*_ import requests import time ...

  4. linux软连接和硬链接

    1.软连接(符号连接)创建方法(相当于windows的快捷方式) # ln -s 原文件 连接文件(最好使用绝对路径) 特点: 1.软连接文件是777的权限,而且很小很小: 2.可以跨分区(文件系统) ...

  5. 替换节点及replaceEach方法

    需求: 为所有的 li 节点添加 onclick 响应函数实现 city 子节点和 game 子节点对应位置的元素的互换 window.onload = function(){ //自定义互换两个节点 ...

  6. Digital root(数根)

    关于digital root可以参考维基百科,这里给出基本定义和性质. 一.定义 数字根(Digital Root)就是把一个数的各位数字相加,再将所得数的各位数字相加,直到所得数为一位数字为止.而这 ...

  7. Android 从图库到选择图片onActivityResult接收注意的问题

    从图库选择图片然后返回数据接收处理的时候,这个时候我们可能会遇到一个问题.就是明明我走了返回的代码.但是为什么我的图片路径没有拿到?这个时候可能是Android的api不同导致,因为Android4. ...

  8. 学C日志

    学C历程 这里记录的都是笔记 忘记了好回头看看~ 提示 :如果在双击自己编译的程序运行时一下就消失不见了 可以在程序代码末尾加上 system("pause"); 程序就会等待到输 ...

  9. 访问者模式(Visitor Pattern)

    定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作. Visitor 抽象访问者角色:为该对象结构中具体元素角色声明一个访问操作接口.该操作接口 ...

  10. Mysql 安装-操作-备份

    Mysql 5.7 安装windows 1.配置mysql的path->系统属性->环境变量-path添加最后 2.配置目录和主从 [mysqld]port = 3306 basedir= ...