栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

gtest1.7版本支持vs2010的 Unicode编码和MFC的测试

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gtest1.7版本支持vs2010的 Unicode编码和MFC的测试

问题来源:

做测井软件的开发的时候,因为很多系统的接口都是用的兼容多字节和unicode编码的形式写的,比如 接口LogMsg中的参数 LPCTSTR lpszModuleName , LPCTSTR lpszMessage都是可变的类型

virtual void  LogMsg( LPCTSTR lpszModuleName , LPCTSTR lpszMessage ,SYSTEMINFOTYPE nInfoType )=0 ;

因为工程开发用的是unicode版本,而我的单元测试gtest是多字节版本,就造成了很多地方不兼容,其次在开发的过程中用到了很多在MFC中定义的数据类型,比如CString,而我的多字节的gtest是不支持CString的

目的:

1.修改gtest的编译使其支持unicode和工程的配置选项一致

2.能够支持MFC中的CString数据类型

解决方案:

重新编译gtest,然后将gtest生成的库gtest.lib应用到我们新的支持Unicode编码的单元测试工程中,具体如下:

我用的是gtest1.70的源码

1.先用cmake生成VS的编译工程(选择最新的VS工程 )

2.然后VS2010打开升级成2010的工程(我用的是VS2019打开升级到2019的工程,然后编译套件选择的V100)

3.更改编译选项

      a用宽字节Unicode编码(属性-genneral-编码)为了支持unicode编码

      b.更改MFC的使用标准windows->为mfc共享dll(属性-genneral-MFC使用方式) 为了支持使用MFC,

     c 更改运行时环境 (debug)MTd->MDd(c++代码生成 -运行时)为了使用MFC如果选择MTd,会出现和单元测试的工程不兼容的问题,需要忽略很多库,并且会提示链接器工具警告 LNK4217

4.创建一个控制台工程

      a.将gtest的头文件拷贝过去(gtest工程目录下的include目录下的gtest目录)

      b.将gtest.lib添加到工程中(属性-链接-输入)

      c.修改main函数

      int main(int argc, char* argv[])

      {

            testing::InitGoogleTest(&argc, argv); 

            return RUN_ALL_TESTS();

      }

在main中testing::InitGoogleTest用的是char类型的版本,我原来以为应该用宽字节的版本,但是用宽字节的版本,传递过去的参数 比如filter就没有起作用,在用char类型的情况下参数是起作用

5.设置工程的连接器->调试->生成调试信息->是 这样就可以在单元测试中调试我们的代码了 哪里出错了可以设置断点,原来我都是在程序中进行打印,没有这个方便

测试正常可以运行,运行的效果比较慢 。

gtest1.7编译支持unicode测试和MFC支持CString的使用-桌面系统文档类资源-CSDN下载不需要积分即可下载

我看gtest已经有新的版本等后续有时间将gtest升级到新的版本,但是新的gtest编译器好像需要更高的编译套件,vs2010已经开始不支持

后记:跟gtest无关

我做的测试其中老是卡死,刚开始以为是gtest不稳定造成的,后来分析是我做测试的时候引入的dll模块中的线程死锁造成的,(我需要获取模块:通讯板卡中的信息,但是快速加载并通过给线程发送退出消息后,模块中的线程还没有启动,然后我开始死等线程退出,这个时候线程是不会收到退出消息的,后来添加了信号量,启动线程之后,让被启动的线程通知已经启动完毕,然后主线程再继续运行,并且死等的过程还是会有不退出的问题,最后只能用等待超时机制,重发退出消息才解决这个问题),现在测试跑起来都没有问题了,可以快速的迭代更新代码了。2022.04.27

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号