VS2017C++单元测试

0、欢迎食用

  • 希望对点进来的你有所帮助。
    全文记流水账,内心想法如示例项目名称。

1、建立需测试的项目

  • 新建项目
    885954-20170908000304397-1162829096.png
  • 正常书写.h 和.cpp文件
    885954-20170908000630757-19422356.png
    885954-20170908000639522-589860831.png

2、新建单元测试

  • 右击解决方案 -> 添加 -> 新建项目
    Visual C++ -> 测试 -> 本机单元测试项目
    885954-20170908002250304-895200007.png
  • 点击确定出现
    885954-20170908002514929-2047698517.png

3、添加被测项目的引用

  • UnitTest1(个人单元测试项目名称,下同) -> 右击引用 -> 添加引用 -> 勾选被测项目
    885954-20170908002830007-32838654.png

4、编写测试代码

  • 修改unittest1.cpp
    885954-20170908002550601-117949931.png

5、运行测试

  • 测试 -> 运行 -> 所有测试
    885954-20170908003123976-2019450785.png

6、boom

  • 你以为这样就成功了?天真。
    885954-20170908003341601-224929232.png

  • 解决

    • 右击UnitTest1 -> 属性
      链接器 -> 输入 -> 附加依赖项 -> 编辑
      885954-20170908004001882-40664167.png
    • 添加附加依赖项
      885954-20170908004045694-618634715.png
      • 注意添加的依赖项为被测试类的.obj,不知道的话可以自己翻一下目录。
        885954-20170908014403194-766368471.png

7、运行结果

  • 终于成功了
    885954-20170908004259726-802788590.png

8、再次boom

  • 就这样高枕无忧了?天真。
    在测试数独项目的时候,由于被测试的类引用了别的类,然后又boom。
    885954-20170908012130882-1835297799.png
  • 再次解决

    • 法一:根据报错信息添加对应依赖项
      • 右击UnitTest1 -> 属性
        链接器 -> 输入 -> 附加依赖项 -> 编辑
        885954-20170908134111272-134261572.png
      • 嫌麻烦的话可以只在这里写xxx.obj,然后点击
        链接器 -> 常规 -> 附加库目录 -> 编辑
        选择xxx.obj对应目录即可
    • 法二:改添加静态库(如果有的话。添加之前最好都先翻一下目录看看有啥)
      • 右击UnitTest1 -> 属性
        链接器 -> 输入 -> 附加依赖项 -> 编辑
        885954-20170908012424132-299068802.png
        注意这里的Debug和法一中的Debug不是同一个文件夹呀。

9、插播OpenCover插件配置

  • 乱七八糟找了好多都不知道用。github翻这里。看README里面最后也推荐NuGet,那个Alternatively还特意加粗了,果然好用。不听老人言,吃亏在眼前。血泪史啊。
  • 具体配置过程
    • 工具 -> NuGet包管理器 -> 程序包管理控制台
      885954-20170908115711491-144734185.png
    • 把这里的命令复制一下。
      885954-20170908120518726-868000866.png
    • 对,就是那个橙色的复制按钮点击一下,然后在上面提到的程序包管理控制台粘贴回车。
      885954-20170908120352866-821474634.png

10、参考资料

  • 基础书写参考
    http://blog.csdn.net/lovehaihong5401/article/details/77608959
  • 问题修复参考
    http://www.cnblogs.com/xiaoyongwu/p/5289964.html
    https://msdn.microsoft.com/zh-cn/subscriptions/hh419385(v=vs.110).aspx
  • NuGet安装插件
    http://blog.csdn.net/u013828589/article/details/72302984

转载于:https://www.cnblogs.com/HBING/p/7492597.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ncf 推荐系统_浅析神经协同过滤NCF在推荐系统的应用

NCF在推荐领域应用背景CF,也就是协同过滤,在推荐领域有极其广泛的应用,应该没有谁的智能推荐系统是没用到过CF的。CF其实就是挖掘user和item的交互关系,然后生成I2I或者U2I表示向量。传统的CF从数学角度上还是偏行为统计计算的&am…

2020身高体重标准表儿童_2020年儿童标准体重表出炉!过胖影响发育!(附身高体重标准表)...

近年来,孩子们长胖的趋势越来越明显,一些疾病也有年轻化的趋势。很多家长们平时也很注意饮食搭配和运动,但孩子还是一不小心就“超重”了,真的防不胜防。相信和我一样担忧孩子家长肯定不少。今天就来和大家讲讲,关于孩…

游戏的未来是什么?

“我们还没有真正跨过VR 1.0,无绳VR要么不可靠要么非常贵。我们正在朝VR 2.0发展,用的是眼球追踪,有更大的视野、更高的分辨率、更好的音频和六个自由度,但这些领域仍需要进一步研究。”来源丨Forbes作者丨Matt Gardner编译丨科技…

AI仿生:人类进化新可能

来源: 脑极体看过《银翼杀手》这部开创赛博朋克风格科幻电影的人,一定会对电影中仿生人罗伊贝蒂印象深刻,尤其是电影结尾时反派男主在滂沱大雨中的临终独白:我目睹过你们绝对不会相信的东西:战舰在猎户星座的边缘燃烧&…

python 获取 字典中的指定键_python中字典方法的详细教程

上篇文章讲到了python字典的基础知识,今天继续python中哈希(字典的应用)方法的应用。前章回顾:python字典的应用及案例分析字典方法:dict.clear() 删出字典内所有的元素。dict.copy() 返回字典的一个浅复制。dict.fromkeys(seq[,val]):创建一…

事务基本信息

一、事务的定义 事务(Transaction)是由一系列对系统数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit),侠义上的事务特质数据库事务。1)当多个应用程序并发访问数据库时,事务可以在这…

android 人脸识别_小模型,高精度!小视科技推出极致轻量型人脸识别SDK

AI 落地为王时代的到来,使得人脸识别的精度和速度备受人们关注。近年来,随着模型压缩、量化技术的进步,模型运行速度也越来越快。对于一些特定的人脸检测任务,轻量型的人脸识别SDK即可满足需求。▲图源网络轻量级架构的显著特征便…

机器视觉基础知识详解

来源:工业机器人随着工业4.0时代的到来,机器视觉在智能制造业领域的作用越来越重要,为了能让更多用户获取机器视觉的相关基础知识,包括机器视觉技术是如何工作的、它为什么是实现流程自动化和质量改进的正确选择等。小编为你准备了…

截屏没有了_华为手机居然有6种截屏花招,很多人不知道,你会用哪几种?

华为手机越来越受国民的欢迎,而且华为手机的功能挺多挺实用的。就比如:支持画“一”进行分屏操作,可以让我们一边追剧一边聊天,真的特别方便。我使用华为手机也已经有三个年头了,在日常生活中看到一些有用的内容&#…

科技巨头纷纷从刷脸转向“刷手”,指纹如何扛起生物识别大旗?

来源:CSDN日前,IBM 高调宣布不再提供任何人脸识别服务和人脸分析软件及不再继续研发相关技术,正式退出市场。紧随其后,亚马逊也宣布,将暂停警方使用其人脸识别技术一年,转向扫描手掌特征来识别用户身份。人…

宜春万申智能装备携粉体自动化产线解决方案盛装亮相2024济南生物发酵展

宜春万申智能装备股份有限公司受邀盛装亮相2024第12届济南国际生物发酵展 展位号:1号馆A16-2展位 2024第12届国际生物发酵产品与技术装备展览会(济南)于3月5-7日在山东国际会展中心盛大召开,全方面展示:生物发酵、生…

浙大绘制首个地球微生物“社会关系”网络

来源:浙江大学图片由课题组提供单个微生物看不见、摸不着,但却无时不在、无处不在。但微生物的功能绝非“分解者”这么简单,影响到温室气体的、绿色生产的、人体健康的方方面面,其群落组成和功能具有极高的复杂性。如何更好认识微…

原型链相关

1.创建对象有几种方法 // 第一种var object1 { name:fang};var object2 new Object({name: fang});console.log(object1, object2);  //Object {name: "fang"} Object {name: "fang"}// 第二种var M function(name){this.name name};var object3 ne…

甘特图制作_如何用Excel快速制作甘特图?(超详细!)

甘特图作为现代项目管理中一项重要的管理工具,它能够帮助你考虑资源、成本等项目中重要的元素,并且能够通过图形直观的观察到项目中所要完成的任务、开始与结束时间,每项任务所需时间,某项任务在某个时间段内完成等都能直观的呈现…

后MATLAB时代的七种开源替代,一种堪称完美!

来源:中国指挥与控制学会近日,有哈工大学生表示收到了正版软件取消激活的通知,而在与 MATLAB 开发公司 MathWorks 交涉之后,被告知由于美国政府实体名单的原因,相关授权已被中止。目前,哈尔滨工业大学、哈尔…

训练深度学习_深度学习训练tricks整理1

深度学习训练tricks整理1环境:pytorch1.4.0 Ubuntu16.04参考:数据增强策略(一)​mp.weixin.qq.comhttps://zhuanlan.zhihu.com/p/104992391​zhuanlan.zhihu.com深度神经网络模型训练中的 tricks(原理与代码汇总&…

三个可能会被计算机视觉技术改变的行业

计算机视觉最主要的应用是面部识别,这种技术经常被用于安全和执法领域。但是,本文意在介绍一些计算机视觉技术不太明显的用途。来源丨Forbes作者丨Bernard Marr编译丨科技行者计算机视觉技术(也被称为机器视觉)允许机器以视觉方式…

没有数学何来计算机:论计算机起源的数学思想

来源:无数学 无计算机人类的历史可以看做一部关于解放的历史。也有这样的说法,懒惰是人类进步的动力。为了偷懒,人类不断的做着各种努力,发明了各种机器工具,将自己从繁重的劳动解放出来,另一方面&#xf…

复杂控件

1.自定义标题栏 1.1引入布局 步骤: 1)写好布局 2)在activity布局里面直接引用该布局 核心代码: 注意:如何将系统自带的标题栏去掉: 方法一:(不一定灵) 方法二&#xff1a…

​Arm芯片的新革命在缓缓上演

来源:内容由半导体行业观察(ID:icbank)编译自「seekingalpha」,谢谢。因为苹果将发布使用其自研Arm芯片的Mac电脑,为此我认为基于ARM的芯片将蚕食 Intel和AMD的核心业务。这其实已经发生了,但是…