使用 GTest 编写基本的 C++ 测试

起点:我们假设您已经设置了一个 基本的 ament_cmake 包,并且您想在其中添加一些测试。

在本教程中,我们将使用 gtest

软件包设置

源代码

我们将从名为 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

将以下行添加到 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>
  )
  ament_target_dependencies(${PROJECT_NAME}_tutorial_test
    std_msgs
  )
  target_link_libraries(${PROJECT_NAME}_tutorial_test name_of_local_library)
endif()

测试代码被包含在 if/endif 块中,以避免在可能的情况下构建测试。ament_add_gtest 的功能与 add_executable 类似,因此您需要像平常一样调用 target_include_directoriesament_target_dependenciestarget_link_libraries

运行测试

有关如何从命令行运行测试和检查测试结果的详细信息,请参阅 教程