测试概览
测试是保证 ROS 2 软件质量的关键实践。ROS 2 构建系统集成了多种测试框架,支持从单元测试到集成测试的完整测试体系,并可在 CI/CD 中自动运行。
ROS 2 中的测试通常分为以下几类:
单元测试用于验证单个函数或类的行为是否符合预期。ROS 2 支持多种语言的单元测试框架:
- C++ 测试:使用 Google Test(gtest)框架,通过
ament_add_gtest宏集成到 CMake 构建中。 - Python 测试:使用 Python 标准库
unittest或 pytest 框架。
集成测试用于验证多个节点协同工作时的行为。ROS 2 提供了 launch_testing 框架,允许在测试中启动完整的节点图,然后对各节点的输入输出进行断言。
构建农场测试
Section titled “构建农场测试”ROS 2 的官方构建农场(build farm)会在多个平台和发行版上自动构建和测试所有提交的包,确保跨平台兼容性。
使用 colcon 运行测试:
# 运行所有包的测试colcon test
# 运行单个包的测试colcon test --packages-select <package_name>
# 运行测试并输出详细结果colcon test --event-handlers console_direct+测试结果默认输出到 build/<package_name>/test_results/ 目录下,可使用 colcon test-result 查看汇总。
更多详情请参阅 ROS 2 官方测试文档。