Parasoft C/C++test如何在CCS3环境下进行F2812项目的单元测试

Parasoft C/C++test作为一款功能强大的自动化测试工具,为嵌入式开发提供了全面的测试解决方案。特别是在CCS开发环境中,C++test能够无缝集成,为F2812等DSP项目提供专业的单元测试支持。下面将介绍如何在CCS3环境下配置和使用C++test进行F2812项目的单元测试。

启动 C++test

修改bat文件:

在CCS安装目录下,存在一个DosRun.bat文件,该文件配置了CCS3的编译和运行环境。如果需要使用C++test测试,则需要保证C++test能在该正确环境下启动并执行单元测试。

Bat文件内容如下:

lang-js 复制代码
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",选择"复制"。
  1. 选择刚复制到"用户自定义"下的测试配置"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文件,按照提示,增大相应部分存储空间大小,如下所示:

lang-js 复制代码
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
}

修改后,重新执行测试。

Parasoft C/C++test为CCS3环境下的F2812项目提供了完整的单元测试解决方案,涵盖环境配置、测试用例生成、桩函数创建到测试执行与结果分析的全流程。除了单元测试,Parasoft C/C++test还支持静态代码分析、覆盖率分析等全方位质量保障手段,帮助团队提升代码质量,确保符合功能安全标准,降低项目风险,为嵌入式软件开发提供全面可靠的质量保障。

相关推荐
学IT的周星星5 小时前
Spring 框架整合 JUnit 单元测试
java·spring·junit·单元测试
千里镜宵烛5 小时前
Lua 面向对象编程完全指南:从元表到私密性,解锁灵活封装技巧
junit·单元测试·lua
安冬的码畜日常17 小时前
【JUnit实战3_24】 第十四章:JUnit 5 扩展模型(Extension API)实战(下)
测试工具·junit·单元测试·jdbc·junit5扩展·junit extension
workflower1 天前
测试套件缩减方法
数据库·单元测试·需求分析·个人开发·极限编程
要一杯卡布奇诺1 天前
测开百日计划——Day1
功能测试·测试工具·单元测试·集成测试
安冬的码畜日常2 天前
【JUnit实战3_27】第十六章:用 JUnit 测试 Spring 应用:通过实战案例深入理解 IoC 原理
spring·观察者模式·设计模式·单元测试·ioc·依赖注入·junit5
敲代码的嘎仔2 天前
JavaWeb零基础学习Day6——JDBC
java·开发语言·sql·学习·spring·单元测试·maven
安冬的码畜日常2 天前
【JUnit实战3_28】第十七章:用 JUnit 5 实测 SpringBoot 项目
spring boot·功能测试·测试工具·设计模式·单元测试·junit5
l1t2 天前
luadbi和luasql两种lua duckdb驱动的性能对比
开发语言·单元测试·lua·c·csv·duckdb