rostest与lcov

Rostest与lcov


在ROS中集成了gtest的功能,在一个叫rostest的功能包下面,要使用rostest的功能,需要现在CMakeList.txt与package.xml中做配置

  • CMakeLists.txt中的主要设置

首先包含rostest库

#设置Test开启关闭状态 开启:ON,关闭:OFF
set(CATKIN_ENABLE_TESTING ON)
message("CATKIN_ENABLE_TESTING is: " ${CATKIN_ENABLE_TESTING})

#并包含rostest功能包
find_package(rostest REQUIRED)

然后通过catkin_add_gtest,添加测试目标文件

if(CATKIN_ENABLE_TESTING)
  catkin_add_gtest(demotest src/demo_test.cpp)
  target_link_libraries(demotest 编译所需要的库)
endif()
  • package中主要设置

编译依赖中加入rostest即可

<build_depend> rostest </build_depend>

测试文件中引入gtest头文件,剩余的和写gtest单元测试一样

#include <gtest/gtest.h>
#include "测试文件.h"

TEST(Testcase,testname){
    do test;
}

int main(int argc,char** argv){
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}

运行所有测试:

catkin_make run_tests 

运行单个测试

catkin_make run_tests<TAB><TAB>

双击tab后会出现添加了的test文件,以run_tests+节点名称+gtest+设置的测试文件名称结尾,比如

catkin_make run_tests run_tests_demo_node_gtest_demotest

代码覆盖率测试-lcov

gcov是Linux下GCC自带的一个C/C++代码覆盖率分析工具, 可以生成代码覆盖信息, 已安装gcc的环境直

接支持gcov的使用

lcov是gcov工具的图形前端,收集多个源文件的gcov数据,生成描述覆盖率的HTML页面。生成的结果

中会包含概述页面,方面浏览,lcov需要单独安装。

# 获取 
wget https://github.com/linux-test-project/lcov/releases/download/v1.14/lcov- 1.14.tar.gz 
tar -zxvf lcov-1.14.tar.gz 
# 编译 
make 
# 安装 
make install

然后在需要统计代码覆盖率的工程下添加设置

# 编译时启用覆盖率统计 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") 
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")

统计流程是

  • 编译添加了启用覆盖率统计的工程

  • 清空上次的覆盖率统计数据

  • 运行测试文件

  • 收集覆盖率文件生成统计数据

  • 利用覆盖率统计数据*.info生成html文件

# 清空上次的统计数据 
#lcov --directory appdir --zerocounters 
lcov --directory ./build/CMakeFiles/demotest.dir/src --zerocounters 

# 执行编译后的测试文件 
./demotest 

# 收集测试文件运行后产生的覆盖率文件 
# lcov --directory appdir --capture --output-file app.info 
lcov --directory ./build/CMakeFiles/demotest.dir/src --capture --output-file ./build/CMakeFiles/demotest.dir/src/app.info 

# 通过*.info生成html文件 
# genhtml app.info 
genhtml ./build/CMakeFiles/demotest.dir/src/app.info --output-directory ./coverage

然后使用浏览器打开./coverage/index.html可以看到覆盖率统计信息

主要注意一点的是,被注释的代码不会被统计计算在内。

参考

ROS-----rostest tool使用_倔强不倒翁的博客-CSDN博客_rostest

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值