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

起点:我们假设您已经设置了 basic ament_cmake package,并且想要向其中添加一些测试。

在本教程中,我们将使用 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>
  )
  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

运行测试

有关运行测试和检查测试结果的更多信息,请参阅 关于如何从命令行 <CLI> 运行测试的教程