C++test针对QT项目在Linux下arm-none-linux-gnueabi-g++
编译器调试总结
操作系统:Ubuntu
编译环境:QT,arm-none-linux-gnueabi-g++编译器 测试工具:C++test9.5 测试目标:单元测试
由于是项目是arm-none-linux-gnueabi-g++嵌入式平台编译器,需要使用C++test自定义编译器构建可执行文件,然后将编译好的可执行文件传到目标机运行,再将运行的结果拷贝到主机平台查看测试结果。 一、自定义编译器
在C++test中选择文件-》新建-》其他-》C++test=》自定义编译器,分别指定C编译器、C++编译器以及链接器。如C编译器指定为:/opt/freescale/usr/local/ arm-none-linux-gnueabi-gcc,C++编译器和链接器指定为/opt/freescale/usr/local/ arm-none-linux-gnueabi-g++
在自定义编译器的时候,最好能记住编译器的存储路径,因为后面可能需要再次修改编译器文件(c.psrc,cpp.psrc和gui.properties)
二、修改Build Test Executable - Generic Embedded System测试配置
打开测试配置-》Builtin-》Embeded Systems,复制“Build Test Executable – Generic embedded System”到用户自定义中,选择Execution-》General,编辑测试执行流,如下图所示:
将testLogFile和covLogFile路径设定为当前目录,即 testLogFile=”./cpptest_results.tlog” covLogFile=”./cpptest_results.clog” 如下图所示:
另外,在执行-》符号选项卡下,配置如下图所示:
注:这里不勾选“使用来自附加的项目文件的符号”,和勾选“忽略对象/库文件”,解决类似如下重复定义问题:
/home/gerrit/parasoft/workspace/.cpptest/musicplayer/file-data/AppMessage.cppca688fcf/adds/harness_AppMessage.o: In function
`AppMessage::PostToQueue(int, unsigned int, unsigned int, long)': /media/gerrit/SGME17/SGME17-Project/projects-SGME17/musicplayer/src/message/AppMessage.cpp:152: multiple definition of
`AppMessage::PostToQueue(int, unsigned int, unsigned int, long)'
三、执行遇到-m32(或-m64)问题解决
当遇到-m32(或-m64)不识别的问题,需要修改一下自定义的编译器文件(c.psrc、 cpp.psrc和gui.properties),将文件中的-m32(或-m64)选项删除即可。保存后重启c++test工具。
四、libcpptestruntime64.so文件格式不识别问题
当执行Build Test Executable - Generic Embedded System测试配置时,遇到libcpptestruntime64.so:File not recognized:File format not recognized问题,如下图所示:
解决方法:
修改自定义的编译器文件(c.psrc、 cpp.psrc和gui.properties),将-L$(CPPTEST_LIB_DIR) –lcpptestruntime64内容删除。然后保存自定义编译器文件,重启c++test工具。
五、C++test构建测试用例时,构建选项需要跟QT构建选项保持一致,不然会因为缺少库而构建失败,找不到文件定义等问题
QT构建内容可以在构建项目时控制台信息查看,如缺少链接库选项,将其添加到C++test构建设置的链接器选项中。
在惠州德赛西威中,将-Lxxxxxxxxxxxxx等选项添加到项目属性-》Parasoft-》C++test-》构建设置-》链接器选项中。
六、可执行程序在目标机上运行
选择测试用例,执行Build Test Executable - Generic Embedded System测试配置,进行编译构建测试用例,生成可执行文件,如下图所示:
构建完成后,可以看到在项目工作空间下(如:~/workspace/.cpptest/projectname/unit-data/current_tubf179707/)生成了可执行文件XXXXX.exe:
将可执行文件XXXXX.exe拷贝到目标机上运行,运行成功后,会在目标机的当前目录生成cpptest_results.clog和cpptest_results.tlog日志文件。
将cpptest_results.clog和cpptest_results.tlog日志文件回传到之前主机平台~/workspace/.cpptest/projectname/unit-data/current_tubf179707/目录下。
回到主机平台c++test,选择测试用例,执行Load Test Results(Files),如下图所示:
测试结果如下图所示: