VisualStudio 2019 C++单元测试框架CppUnitTest配置说明

代码紫霄使
• 阅读 3589

问题描述:
在开发过程中,我们需要对自己写的算法进行测试,使用使用调试工具、或者运行起来调会存在测试不到位,测试效率低下等问题,使用单元测试会好很多,它效率高、容易理解,并且更符合基于TDD(测试驱动开发)的思想,这里将Vs 下C++单元测试框架CppUnitTest的配置过程记录如下。

正文内容:
首先,单元测试项目在Visual Studio中会随着安装各种不同的语言环境默认安装,比如安装了.net 开发环境时会安装NUnit MSTest等测试框架。这里我们简单介绍一下C/C++开发时Visual Studio可以为我们提供的便利之处。

  1. 安装
    Visual Studio2019在首次安装时只要选择了”使用C++的桌面开发”,这个时候就会默认安装google test 模块和Boost Test模块,如图:
    VisualStudio 2019 C++单元测试框架CppUnitTest配置说明
  2. 使用,首先我们创建一个空解决方案,然后在空解决方案下建立一个基于C++的空项目,我们命名为”ProjForUnittest”
    VisualStudio 2019 C++单元测试框架CppUnitTest配置说明
    我们简单创建一个C++的类,并创建一个返回值为int的函数,用作单元测试的讲解。这里我们创建了一个叫做Calc的类,然后创建并实现了一个名称为Add的函数,其作用为将x,y两个参数相加并返回这个结果。
  3. 创建测试项目CppUnittest
    鼠标点选解决方案右键->添加->新建项目,我们在项目模板搜索栏中输入Test,会出现如下界面
    VisualStudio 2019 C++单元测试框架CppUnitTest配置说明
    我们可以看到标注语言为C++的两个单元测试项目模板,一个是Google Test,另一个是本机单元测试项目,其中本机单元测试项目源自于微软,相对简单,我们这里选择它进行创建,创建好之后,目录如下
    VisualStudio 2019 C++单元测试框架CppUnitTest配置说明
  4. 项目设置
    (1) 将测试目标项目的配置类型变更为动态库 .dll 或静态库 .lib
    点选测试目标项目右键->属性->常规->配置类型->静态库(.lib)
    (2) 将测试目标项目和测试项目的输出目录都修改为ProjectDir(默认设置是SolutionDir)
    属性->常规->输出目录,将SolutionDir替换为ProjectDir
    (3) 将测试目标项目添加至单元测试项目引用中
    选中单元测试项目下的“引用”节点右键->添加引用->选择测试目标项目点击确定
    (4) 将测试目标项目中公开的头文件所在目录添加至单元测试项目的附加包含目录
    选中单元测试项目右键->C/C++->常规->附加包含目录->编辑
    VisualStudio 2019 C++单元测试框架CppUnitTest配置说明

点击添加目录按钮,选择测试目标目录的头文件所在目录。
(5) 将测试目标项目的.lib 或 .dll 文件的输出目录添加至单元测试文件的附加库目录,并添加.lib文件名(为测试目标项目的名称)至附加依赖库。
1 添加附加库目录
测试项目右键属性->链接器->常规->附加库目录(同上第4条操作)将lib文件的输出目录添加到列表中(一般测试时使用的是项目目录下的Debug目录)
2 添加库文件至附加依赖库
VisualStudio 2019 C++单元测试框架CppUnitTest配置说明
测试项目右键属性->链接器->输入->附加依赖库
VisualStudio 2019 C++单元测试框架CppUnitTest配置说明
在随后打开的文本框中输入.lib(指代目标测试项目输出的lib文件名。)
以上就是C++单元测试项目之间的配置过程。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
万木春 万木春
2年前
高效易用的C++单元测试框架:轻松构建高质量代码
单元测试是构建稳定、高质量的程序、服务或系统的必不可少的一环。通过单元测试,我们可以在开发过程中及时发现和修复代码中的问题,提高代码的质量和可维护性。同时,单元测试也可以帮助我们更好地理解代码的功能和实现细节,从而更好地进行代码重构和优化。
Stella981 Stella981
3年前
OpenStack基础知识
针对以前学的内容的一个简单整理1、单元测试工具介绍unittest:是Python的标准库,提供了最基本的单元测试功能,包括单元测试运行器(简称runner)和单元测试框架。项目的单元测试代码的测试类可以继承unittest.TestCase类,那么这个类就能够被runner发现并且执行。同时,unittest.TestCase
Stella981 Stella981
3年前
Mock工具之Mockito实战
在实际项目中写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖项又会有依赖,导致在单元测试代码里几乎无法完成构建,尤其是当依赖项尚未构建完成时会导致单元测试无法进行。为了解决这类问题我们引入了Mock的概念,简单的说就是模拟这些需要构建的类或者资源,提供给需要测试的对象使用。业内的Mock工具有很多,也已经很成熟了,这里我们将直接使用最流行的Moc
Wesley13 Wesley13
3年前
C# 单元测试(入门)
注:本文示例环境VS2017XUnit2.2.0单元测试框架xunit.runner.visualstudio2.2.0测试运行工具Moq4.7.10模拟框架什么是单元测试?确保软件应用程序按作者的期望执行操作,其中最好的一种方法是拥有自动化测试套件。可以对软件应用程序进行各种不同的测试,
Wesley13 Wesley13
3年前
ThinkPHP3.2.2
单元测试与问题发现通过查看源代码,会发现一些潜在的问题。但为了验证这些问题确实存在,以及说明发生在何种场景以便测试重现,我们需要先对Think\\Log这个类编写对应的单元测试,这也利于对后期进行重构后进行回归测试。测试环境部署如下所示,在ThinkPHP同级上建立了对应的测试目录test\_ThinkPHP
Wesley13 Wesley13
3年前
DDT框架结合单元测试
文章总览图!(https://oscimg.oschina.net/oscnet/32656b7da0184328983f53f4acde8efd.png)Excel读写测试数据python配置文件的类封装DDT框架原理以及使用DDT框架结合单元测试
Wesley13 Wesley13
3年前
DNSDUN招聘PHP程序员
职位描述:1、根据设计文档或需求说明完成代码编写,调试,测试和维护;2、分析并解决开发过程中的问题;3、配合产品经理参与需求设计;4、协助测试工程师制定测试计划,定位发现的问题;5、做好单元测试,配置、部署本地与测试环境,与产品、测试部门积极有效沟通,推动任务进展;岗位要求:1、拥有良好的代码习惯,要求结构清晰,命名规范
Java单元测试及常用语句 | 京东物流技术团队
编写Java单元测试用例,即把一段复杂的代码拆解成一系列简单的单元测试用例,并且无需启动服务,在短时间内测试代码中的处理逻辑。写好Java单元测试用例,其实就是把“复杂问题简单化,建单问题深入化“。在编写的过程中,我们也可以对自己的代码进行一个二次检查。