Skip to content

This repo is a demo ROS2 package to demonstrate how to do unit test using gtest and run memory leak check with valgrind in a ROS2 package.

Notifications You must be signed in to change notification settings

Zard-C/ROS2-Unit-Test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

This repo is a demo ROS2 package to demonstrate how to do unit test using gtest and run memory leak check with valgrind in a ROS2 package.

Dependencies

  1. ROS2
  2. colcon
  3. gtest
  4. valgrind

Build & Install

git clone <branch> colcon build

Directories

demo ├── CMakeLists.txt ├── README.md ├── include │ └── demo.hpp ├── package.xml ├── src │ ├── demo.cpp │ └── main.cpp └── unitest └── ut.cpp

The include and src folder, package.xml and CMakeLists.txt file are created by the ros2 pkg create command ros2 pkg create <pkg_name>.

The unit test source file is located in: demo/unitest/

If built successfully, the directory would be like:

. ├── build │ ├── COLCON_IGNORE │ └── demo ├── demo │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ ├── package.xml │ ├── src │ └── unitest ├── install │ ├── COLCON_IGNORE │ ├── _local_setup_util_ps1.py │ ├── _local_setup_util_sh.py │ ├── demo │ ├── local_setup.bash │ ├── local_setup.ps1 │ ├── local_setup.sh │ ├── local_setup.zsh │ ├── setup.bash │ ├── setup.ps1 │ ├── setup.sh │ └── setup.zsh └── log ├── COLCON_IGNORE ├── build_2022-09-20_23-16-32 ├── latest -> latest_build └── latest_build -> build_2022-09-20_23-16-32

The Unit Test executable located in: ${workspaceFolder/install/demo/unitest/}

Run Unit Test

Simplely,

./install/demo/unitest/demo_test 

Terminal outputs:

[==========] Running 1 test from 1 test suite. [----------] Global test environment set-up. [----------] 1 test from demo_test [ RUN ] demo_test.test1 [ OK ] demo_test.test1 (0 ms) [----------] 1 test from demo_test (0 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test suite ran. (0 ms total) [ PASSED ] 1 test.

Run Memory Leak Check

valgrind --tool=memcheck --leak-check=full ./install/demo/unitest/demo_test 

Terminal outputs:

==68499== Memcheck, a memory error detector ==68499== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==68499== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info ==68499== Command: ./install/demo/unitest/demo_test ==68499==  [==========] Running 1 test from 1 test suite. [----------] Global test environment set-up. [----------] 1 test from demo_test [ RUN ] demo_test.test1 [ OK ] demo_test.test1 (11 ms) [----------] 1 test from demo_test (20 ms total)  [----------] Global test environment tear-down [==========] 1 test from 1 test suite ran. (62 ms total) [ PASSED ] 1 test. ==68499==  ==68499== HEAP SUMMARY: ==68499== in use at exit: 0 bytes in 0 blocks ==68499== total heap usage: 164 allocs, 164 frees, 109,089 bytes allocated ==68499==  ==68499== All heap blocks were freed -- no leaks are possible ==68499==  ==68499== For lists of detected and suppressed errors, rerun with: -s ==68499== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

TODO

Use lcov to generate coverage stats.

About

This repo is a demo ROS2 package to demonstrate how to do unit test using gtest and run memory leak check with valgrind in a ROS2 package.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published