Skip to content

Arcanain/arcanain_unittest_template

Repository files navigation

arcanain unittest

1.カバレッジツールの導入

gcovのインストール

sudo apt update
sudo apt install gcc g++

インストールが完了したら、gcovのバージョンを確認して、正しくインストールされていることを確認

gcov --version

lcovのインストール

sudo apt update
sudo apt install lcov

インストールが完了したら、lcovのバージョンを確認して、正しくインストールされていることを確認

lcov --version

2. 単体テスト(unit test)の手順

2.1 nodeの作成

2.2 nodeのbuild

2.3 テストコードの作成

次に、Google Testを使用してテストコードを作成します。

test_simple_node.cpp

まず、testディレクトリを作成し、その中にテストファイルを作成します。

mkdir -p ~/ros2_ws/src/simple_node/test

test/test_simple_node.cpp

2.4 CMakeLists.txtの設定

CMakeLists.txtファイルを編集して、カバレッジ測定用の設定を追加します。

cmake_minimum_required(VERSION 3.5)
project(simple_node)

# Find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(ament_cmake_gtest REQUIRED)

# Add executable
add_executable(simple_node src/simple_node.cpp)
ament_target_dependencies(simple_node rclcpp)

# Add gtest
ament_add_gtest(test_simple_node test/test_simple_node.cpp)
if(TARGET test_simple_node)
  ament_target_dependencies(test_simple_node rclcpp)
endif()

# Enable code coverage
if(COVERAGE)
  if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
    message("Build with coverage information")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
  endif()
endif()

install(TARGETS
  simple_node
  DESTINATION lib/${PROJECT_NAME})

ament_package()

2.5 ビルドとテストの実行

次に、ビルドディレクトリを作成し、ビルドとテストを実行します。

cd ~/ros2_ws
colcon build --cmake-args -DCOVERAGE=ON
colcon test

2.6 カバレッジレポートの生成

最後に、lcovを使用してカバレッジ情報を収集し、HTMLレポートを生成します。

# カバレッジ情報の収集
lcov --capture --directory . --output-file coverage.info

# システムヘッダファイルを除外
lcov --remove coverage.info '/usr/*' --output-file coverage.info

# HTMLレポートの生成
genhtml coverage.info --output-directory coverage_report

2.7 カバレッジレポートの確認

生成されたHTMLレポートをブラウザで確認します。coverage_report/index.htmlを開くことで、カバレッジレポートを確認できます。

About

arcanain_unittest_template

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published