開発環境

DockerでGoogle Test+Coverage環境を構築するメモ【Ubuntu24.04】

2025年3月1日

はじめに

この記事では、Google Test と Coverage ツールの Gcovr を、Docker で環境構築する方法を紹介します。

SANACHAN
SANACHAN
実行サンプルもあります。

Google Test は、C++ の単体テストを行うためのライブラリで、
Gcovr はテストのカバレッジを計測するために使用されます。

この環境は、テスト自動化を進める上で非常に有効で、CI/CDへの統合も容易になります。
Docker を使うことで、テスト環境を統一することが可能となり、異なる環境での動作保証ができます。

 

ツールと環境

本記事の執筆にあたり、以下の環境で確認しております。

CPU Intel 11th Core i5 11400
メモリ 16 GiB
OS Ubuntu 24.04 LTS
docker v27.5.1
g++ v13.3.0
cmake v3.28.3
make v4.3
libgtest-dev v1.14.0-1 amd64
gcovr v7.0
lcov v2.0-1

参考

Docker のインストールは「最も簡単な Docker のインストール方法」を参照ください。

ポイント

今回は、HOST 側でコーディングやコンパイルを行っている想定で、
HOST 側の特定のボリュームをコンテナ内にマウントして利用することを目指します。

 

Dockerfile

  • ベースイメージ
    Ubuntu 24.04 LTS
  • パッケージのインストール
    必要なパッケージ(g++, make, gtest, gcovrなど)をインストール
  • Google Test のビルド
    aptでインストールした Google Test のコードをビルド
  • 作業ディレクトリの指定
    HOST 側のボリュームをマウントしてテスト実行する準備

 

Docker Imageのビルド

Dockerfile のあるディレクトリ直下で、以下のコマンドを実行します。
-t の引数は、作成するイメージの名前とタグ名のため、お好みで変更可能です。

 command
$ docker build -t gcc-cmake-gtest:24.04 .

 

コンテナの作成

Google Test で単体試験を実施したいプロジェクトやソースコードのある場所で、以下を実行します。
例では、HOST 側の $(pwd)/src を、コンテナ側の /work にマッピングしています。

また、コンテナを常時残しておく必要が無いため、
試験完了後(コンテナを Exit 後)は、コンテナを削除する設定にしています。

 command
$ docker run --rm -it -v "$(pwd)/src:/work" gcc-cmake-gtest:24.04
SANACHAN
SANACHAN
コンテナ名を付けたい場合は --name [コンテナ名] を追加してください。

 

実行サンプル

C++ サンプル

簡単な関数と、それをテストするためのコードです。

 

Makefile サンプル

main.cpp のビルドと、Google Test の実行、Gcovr でカバレッジを出力する Makefile です。

 

実行方法

 command
# Google Test のみ実行
$ make test
# Google Test の実行と、Gcovr の出力
$ make coverage

 

Gcovr 出力結果

 実行結果
$ make coverage
g++ -std=c++17 -Wall -Wextra -g --coverage -c main.cpp -o main.o
g++ -std=c++17 -Wall -Wextra -g --coverage -o target main.o -lgtest -lgtest_main -pthread --coverage
./target
(snip)
[ PASSED ] 3 tests.
gcovr -v -b --html-details repo/ -r .
(INFO) Reading coverage data...
(INFO) Writing coverage report...

 

HTML の出力先である repo/ 内の coverage_details.html をブラウザなどで開きます。

repo/coverage_details.html

main.cpp をクリックすると、関数単位でテストされた行、テストされていない行が表示されます。

 

おわりに

本記事では、Google Test と Gcovr を使ったテスト環境を Docker コンテナで構築する方法を紹介しました。
カバレッジ測定も簡単に行えるため、コードの品質向上にも役立ちます。

本記事が、テスト環境の構築に悩む方の一助となれば幸いです。

 

参考

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-開発環境
-, , , , ,