ROS-----rostest tool使用

本文详细介绍ROS测试工具rostest的使用方法,包括如何编写测试节点、配置启动文件及CMakeLists.txt,同时提供运行测试的步骤。并通过实例展示了利用gtest和python unittest框架编写测试节点的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    rostest tool是ROS提供的测试工具,其实质是roslaunch tool的功能扩展,但是使用rostest测试时候通常rostest运行的文件是扩展名为.test的XML格式文件,且文件内包含<test> tag。

    注意:roslaunch可以运行扩展名为.test的文件但是不会执行<test>标签内的代码(即测试node不会启动)。

    下面主要介绍rostest使用步骤,并借用ROS一些tutorial代码辅助进行分析。


1 编写test node

    ROS中test node编写支持用2种框架(C++ gtest框架和python unittest框架)来编写code,需要注意的是对于用gtest编写的code是100%支持,用python unittest编写的code需要稍微封装一下。以下分别简要介绍2种编写test node的方法。


1.1 使用gtest编写test node

    关于google test详细用法请参考:https://github.com/google/googletest

    通常是在要测试package目录下创建1个子目录test,在test目录下添加测试代码。

(1)简单函数调用方式

 
<?xml version="1.0"?> <package format="2"> <name>oryxbot_cruise_ex</name> <version>0.0.0</version> <description>The oryxbot_cruise_ex package</description> <!-- One maintainer tag required, multiple allowed, one person per tag --> <!-- Example: --> <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> --> <maintainer email="bobac3@todo.todo">bobac3</maintainer> <!-- One license tag required, multiple allowed, one license per tag --> <!-- Commonly used license strings: --> <!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 --> <license>TODO</license> <!-- Url tags are optional, but multiple are allowed, one per tag --> <!-- Optional attribute type can be: website, bugtracker, or repository --> <!-- Example: --> <!-- <url type="website">http://wiki.ros.org/oryxbot_cruise_ex</url> --> <!-- Author tags are optional, multiple are allowed, one per tag --> <!-- Authors do not have to be maintainers, but could be --> <!-- Example: --> <!-- <author email="jane.doe@example.com">Jane Doe</author> --> <!-- The *depend tags are used to specify dependencies --> <!-- Dependencies can be catkin packages or system dependencies --> <!-- Examples: --> <!-- Use depend as a shortcut for packages that are both build and exec dependencies --> <!-- <depend>roscpp</depend> --> <!-- Note that this is equivalent to the following: --> <!-- <build_depend>roscpp</build_depend> --> <!-- <exec_depend>roscpp</exec_depend> --> <!-- Use build_depend for packages you need at compile time: --> <!-- <build_depend>message_generation</build_depend> --> <!-- Use build_export_depend for packages you need in order to build against this package: --> <!-- <build_export_depend>message_generation</build_export_depend> --> <!-- Use buildtool_depend for build tool packages: --> <!-- <buildtool_depend>catkin</buildtool_depend> --> <!-- Use exec_depend for packages you need at runtime: --> <!-- <exec_depend>message_runtime</exec_depend> --> <!-- Use test_depend for packages you need only for testing: --> <!-- <test_depend>gtest</test_depend> --> <!-- Use doc_depend for packages you need only for building documentation: --> <!-- <doc_depend>doxygen</doc_depend> --> <buildtool_depend>catkin</buildtool_depend> <build_depend>ar_pose</build_depend> <build_depend>eigen3</build_depend> <build_depend>tf</build_depend> <build_depend>control_toolbox</build_depend> <build_depend>angles</build_depend> <build_depend>nav_msgs</build_depend> <build_depend>dynamic_reconfigure</build_depend> <build_depend>ar_track_alvar_msgs</build_depend> <build_depend>arm_controller</build_depend> <build_depend>geometry_msgs</build_depend> <build_depend>rei_robot_cruise</build_depend> <build_depend>relative_move</build_depend> <build_depend>roscpp</build_depend> <build_export_depend>ar_pose</build_export_depend> <build_export_depend>eigen3</build_export_depend> <build_export_depend>tf</build_export_depend> <build_export_depend>control_toolbox</build_export_depend> <build_export_depend>angles</build_export_depend> <build_export_depend>nav_msgs</build_export_depend> <build_export_depend>dynamic_reconfigure</build_export_depend> <build_export_depend>ar_track_alvar_msgs</build_export_depend> <build_export_depend>arm_controller</build_export_depend> <build_export_depend>geometry_msgs</build_export_depend> <build_export_depend>rei_robot_cruise</build_export_depend> <build_export_depend>relative_move</build_export_depend> <build_export_depend>roscpp</build_export_depend> <exec_depend>ar_pose</exec_depend> <exec_depend>eigen3</exec_depend> <exec_depend>tf</exec_depend> <exec_depend>control_toolbox</exec_depend> <exec_depend>angles</exec_depend> <exec_depend>nav_msgs</exec_depend> <exec_depend>dynamic_reconfigure</exec_depend> <exec_depend>ar_track_alvar_msgs</exec_depend> <exec_depend>arm_controller</exec_depend> <exec_depend>geometry_msgs</exec_depend> <exec_depend>rei_robot_cruise</exec_depend> <exec_depend>relative_move</exec_depend> <exec_depend>roscpp</exec_depend> <!-- The export tag contains other, unspecified, tags --> <export> <!-- Other tools can request additional information be placed here --> </export> </package>一样帮我修改,完整的
最新发布
06-29
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值