カテゴリ: C++ 更新日: 2025/12/16

C++プロジェクトにCTestでユニットテストを統合する方法

プロジェクトのユニットテスト統合 (CTest)
プロジェクトのユニットテスト統合 (CTest)

先生と生徒の会話形式で理解しよう

生徒

「先生、C++で作ったプログラムにテストを追加したいです。どうすればいいですか?」

先生

「CMakeにはCTestというユニットテストを統合する仕組みがあります。これを使うと、テストの作成と実行を簡単に行えます。」

生徒

「ユニットテストって何ですか?」

先生

「ユニットテストとは、プログラムの小さな部品(関数やクラス)が正しく動くかどうかを確認するテストです。例えば、計算関数が正しい結果を返すかを確認できます。」

1. CTestとは?

1. CTestとは?
1. CTestとは?

CMakeに付属しているCTestは、ユニットテストを自動で実行し、結果を報告してくれるツールです。テストの実行や失敗の確認、複数のテストをまとめて管理することができます。

CTestを使うことで、テストの追加や実行が簡単になり、プログラムの品質を高めることができます。

2. CTestの設定方法

2. CTestの設定方法
2. CTestの設定方法

まずCMakeLists.txtにテストを有効化する行を追加します。


enable_testing()  # CTestを有効化

次に、テスト用の実行ファイルターゲットを作成します。


add_executable(test_math test_math.cpp)
target_link_libraries(test_math PRIVATE my_utils)

最後に、CTestにテストとして登録します。


add_test(NAME MathTest COMMAND test_math)

これでtest_mathがCTestで管理されるテストになります。

3. ユニットテストの作成例

3. ユニットテストの作成例
3. ユニットテストの作成例

簡単な計算関数をテストする例を見てみましょう。


#include "math_utils.h"
#include <cassert>
#include <iostream>

int main() {
    assert(add(2, 3) == 5);   // 正しいか確認
    assert(subtract(5, 3) == 2);

    std::cout << "All tests passed!" << std::endl;
    return 0;
}

テストが成功すると「All tests passed!」と表示され、失敗した場合はassertによりプログラムが停止します。

4. CTestでテストを実行する

4. CTestでテストを実行する
4. CTestでテストを実行する

CMakeでビルドした後、次のコマンドでテストを実行します。


ctest -V

-Vオプションを付けると、テストごとの詳細な出力を見ることができます。CTestはすべてのadd_testで登録されたテストを順番に実行します。

5. CTest統合のメリット

5. CTest統合のメリット
5. CTest統合のメリット
  • ビルドとテストをCMakeで一元管理できる
  • テストの自動実行でバグの早期発見が可能
  • 複数の開発者が同じプロジェクトで一貫したテストができる
  • CI/CD環境に簡単に統合できる

ユニットテストを統合することで、プログラムの品質向上と開発効率の向上が期待できます。

6. 実際のプロジェクトでの活用例

6. 実際のプロジェクトでの活用例
6. 実際のプロジェクトでの活用例

例えば、数学ライブラリmy_utilsを開発している場合、テストコードをtestsディレクトリにまとめます。


add_executable(test_math tests/test_math.cpp)
target_link_libraries(test_math PRIVATE my_utils)
add_test(NAME MathTest COMMAND test_math)

ビルド後にctestを実行するだけで、すべてのユニットテストが自動で実行されます。

カテゴリの一覧へ
新着記事
New1
C++
C++の変数のスコープと有効範囲を完全解説!初心者でもわかる基本と考え方
New2
C++
C++とは?歴史と特徴を初心者向けに解説!Rustとの違いとモダン言語比較
New3
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド
New4
Rust
Rust開発環境をLinuxで構築する方法とおすすめ設定を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.2
Java&Spring記事人気No2
C言語
C言語の関数定義と呼び出しを完全ガイド!初心者でも分かる基本の書き方
No.3
Java&Spring記事人気No3
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.4
Java&Spring記事人気No4
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作
No.5
Java&Spring記事人気No5
C言語
Makefile入門:C言語プロジェクトを自動ビルドしよう!初心者でも分かる仕組みと使い方
No.6
Java&Spring記事人気No6
C言語
C言語の開発環境をWindowsに構築する方法【Visual Studio編】
No.7
Java&Spring記事人気No7
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.8
Java&Spring記事人気No8
C++
MinGWとMSYS2でWindowsにC++環境を構築する方法を徹底解説!初心者でもできるセットアップガイド