You're reading the documentation for an older, but still supported, version of ROS 2. For information on the latest version, please have a look at Jazzy.
Writing Basic Tests with C++ with GTest
Starting point: we’ll assume you have a basic ament_cmake package set up already and you want to add some tests to it.
In this tutorial, we’ll be using gtest.
Package Setup
Source Code
We’ll start off with our code in a file called test/tutorial_test.cpp
#include <gtest/gtest.h>
TEST(package_name, a_first_test)
{
ASSERT_EQ(4, 2 + 2);
}
int main(int argc, char ** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
package.xml
Add the following line to package.xml
<test_depend>ament_cmake_gtest</test_depend>
CMakeLists.txt
if(BUILD_TESTING)
find_package(ament_cmake_gtest REQUIRED)
ament_add_gtest(${PROJECT_NAME}_tutorial_test test/tutorial_test.cpp)
target_include_directories(${PROJECT_NAME}_tutorial_test PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
target_link_libraries(${PROJECT_NAME}_tutorial_test name_of_local_library)
endif()
The testing code is wrapped in the if/endif
block to avoid building tests where possible. ament_add_gtest
functions much like add_executable
so you’ll need to call target_include_directories
, ament_target_dependencies
and target_link_libraries
as you normally would.
Running Tests
See the tutorial on how to run tests from the command line for more information on running the tests and inspecting the test results.