👀 问题描述:
出现类似cpptest_testrunner.o:in functionmain
:xxx的问题
可能原因 #
出现上述情况,可能的原因有以下两种:
- main函数所在的文件去插桩了;
- 测试配置中没有勾选“重命名main()函数”。
因为正常来说,C/C++test在cpptest_testrunner.h中定义main函数,然后会将main函数重命名,如果项目中有多个main函数,那么报错的应该是类似
这样的报错。报告上面这样的main重复定义的话,说明原项目中的main函数并没有正常被重命名。NewMain
重复定义
解决办法 #
考虑第一种情况 #
查看是否对main函数去插桩了,如果去插桩了,那么需要插桩回来。
考虑第二种情况 #
选择运行的测试配置,找到插桩模式的编辑
查看插桩模式中的“重命名main()函数”,按照下图勾选上。
其他解决办法 #
当然还可以考虑不使用C/C++test内部的main函数,考虑使用项目中的main函数。
步骤一: #
构建设置的地方添加宏开关-DCPPTEST_ENTRY_POINT_DEFINED,这样C/C++test就不会自己生成新的main函数。
步骤二: #
上面两个步骤保证最终可执行程序运行从项目的main函数进入,但这样是不会运行到测试用例代码的,所以还需要对main函数进行修改。需要修改两个地方:
- 在文件前面添加头文件:
#ifdef PARASOFT_CPPTEST #include “cpptest.h” #endif
- 在main函数合适的位置添加如下代码:
#ifdef PARASOFT_CPPTEST CppTest_Main(0,0); #endif