启动C++test #
修改bat文件:
在CCS安装目录下,存在一个DosRun.bat文件,该文件配置了CCS3的编译和运行环境。如果需要使用C++test测试,则需要保证C++test能在该正确环境下启动并执行单元测试。
Bat文件内容如下:
call "c:\CCStudio_v3.3PLA\DosRun.bat"
set PATH=C:\Program Files\Parasoft\Test\9.4;C:\Program Files\Parasoft\C++test\9.4;%PATH%
cpptest
pause
双击CCS_C++test.bat 文件,启动C++test。
导入项目 #
点击菜单“文件”,选择“新建”,展开”C++test”,找到“导入Code Composer Studio 项目”,点击“下一步”。
点击“浏览”,找到CCS3示例项目导入进C++test,点击“下一步”,在“已导入项目的位置”,选择“使用原来.pjt文件的位置”,然后点击“完成”。
生成测试用例 #
在“导航器”窗口,选中所导入的项目,如此例子中的“mytest”,点击菜单“Parasoft”,选择“测试执行”->“内建”->“Unit Testing”->“7 Generate Unit Tests”。
这样会在项目树结构下,自动生成tests目录,展开后其中包含了自动生成的测试套件。
打桩 #
在“导航器”窗口,选中所导入的项目,如此例子中的“mytest”,点击菜单“Parasoft”,选择“测试执行”->“内建”->“Unit Testing”->“5 Generate Stubs”。
如果存在C++test找不到的未定义函数,会在项目树结构下,自动生成stubs目录。
运行单元测试 #
A. 配置“Run TI CCS3.x Tests”
在运行单元测试前,需手动配置修改测试配置。具体操作步骤如下:
1) 选择菜单“Parasoft”-> “测试配置”,打开测试配置对话框,如下所示,展开 “内建”下的 “Embedded Systems”-> “Texas Instruments”,右键测试配置“Run TI CCS3.x Tests”,选择“复制”。
2) 选择刚复制到“用户自定义”下的测试配置“Run TI CCS3.x Tests”,切换到选项卡“执行”,在其中修改target name为“F2812 Device Simulator” (注意:该名称应与Code Composer Studio Setup中模拟器的配置一致)。修改后,点击“应用”-> “关闭”。
原本项目Code Composer Studio Setup设置如下,C++test需与其保持一致:
B. 运行单元测试
打开“测试用例浏览器”,选择希望执行的测试用例,选择菜单“Parasoft”-> “测试执行”-> “用户自定义”-> “Run TI CCS3.x Tests” 。
运行完毕后,可点击菜单“Parasoft”-> “视图” –> “测试用例浏览器”,在该视图中查看各测试用例的执行结果;也可打开覆盖率视图查看具体函数的覆盖度量值;还可以双击源代码文件,打开具体文件,查看颜色区分显示的代码覆盖率结果。
常见问题及解决方案 #
1) 运行单元测试时,报告错误:
TIC libdetector: linker XML log file not found! 进程由于代码: 21 (错误)退出。
解决方案:
一般这种提示错误,需要检查项目设置的编译器是否正确,是否与原项目保持一致。
步骤:选中待测项目,点击菜单“项目”-> “属性”,将打开项目设置属性对话框。展开“Parasoft” -> “C++test” -> “构建设置”, 在右边配置框中,找到“编译器设置”,在 “种类”中需要注意该编译器是否与原本项目编译是匹配的?如果不匹配,请手动将该编译器设置为与原项目相同的编译器。比如:如果你是F28项目,此处的编译器应该是cl2000,但可能C++test自动检测到的是cl6x,这时请手动修改。点击 “种类”右边的下拉菜单,找到对应的编译器,如“TI TMS320C2000 C/C++ Compiler v5.2”。
2) 运行单元测试时,链接报错:
解决方案:
该错误是因为cmd文件设置的存储空间问题。我们知道CCS3中会提供如config.cmd 这种类型的文件进行存储空间的配置。那么使用C++test进行测试时,因为生成了测试用例和一些测试驱动以及链接了C++test提供的运行时库等必要文件,必然导致存储空间增加,那么这时候需要修改这个cmd文件,按照提示,增大相应部分存储空间大小,如下所示:
MEMORY
{
PAGE 0 : BOOT(R) : origin = 0x3f8000, length = 0x80
PAGE 0 : PROG(R) : origin = 0x3d8000, length = 0x20000 //增大后
//PAGE 0 : PROG(R) : origin = 0x3f8080, length = 0x1f80 //原本设置
PAGE 0 : RESET(R) : origin = 0x3fffc0, length = 0x2
/*PAGE 1 : M0RAM(RW) : origin = 0x000000, length = 0x400
PAGE 1 : M1RAM(RW) : origin = 0x000400, length = 0x400*/
PAGE 1 : M0RAM(RW) : origin = 0x000000, length = 0x400
PAGE 1 : M1RAM(RW) : origin = 0x000400, length = 0x400
PAGE 1 : L0L1RAM(RW) : origin = 0x008000, length = 0x2000
}
修改后,重新执行测试。