0Pricing
C++ Academy · レッスン

GTestのセットアップ

フレームワークを追加して実行します

「GTestのセットアップ」はCoddyKit上の無料C++ Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC++ Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C++ Academyコースには全4レッスンが含まれています。

テストフレームワークを使う理由

Google Test(GTest)は、広く使われているC++の単体テストフレームワークです。テストの登録、豊富なアサーション、フィクスチャ、わかりやすいレポート機能を提供し、コードを自動的に検証できます。

GTestを導入する

GTestを入手する一般的な方法は次のとおりです。

  • システムパッケージ(例:libgtest-dev)
  • GitHubから取得するCMakeのFetchContent
  • ベンダー管理のサブモジュール

新しいプロジェクトでは、FetchContentが最も移植性に優れています。

FetchContentを使ったCMake

最小限のCMake設定でGoogleTestをダウンロードし、リンクできます。

# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)
FetchContent_MakeAvailable(googletest)

add_executable(my_tests test_main.cpp)
target_link_libraries(my_tests GTest::gtest_main)

最初のテストを書く

テストは、テストスイート名とテスト名を受け取るTESTマクロで宣言します。テストの中ではアサーションを使用します。

#include <gtest/gtest.h>

int add(int a, int b) { return a + b; }

TEST(MathTest, AddsPositive) {
    EXPECT_EQ(add(2, 3), 5);
}

main()は不要

GTest::gtest_mainにリンクすると、登録されたすべてのテストを実行するmain()が提供されます。作成するのはテストケースだけです。

独自のmainを書く

独自のエントリーポイントが必要な場合は、自分でGTestを初期化します。

#include <gtest/gtest.h>

int main(int argc, char** argv) {
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

ビルドして実行する

CMakeの設定後、ビルドして実行します。

  • cmake -S . -B build
  • cmake --build build
  • ./build/my_tests

GTestは、合格または失敗の概要を色付きで表示します。

出力を読む

各テストはまず[ RUN ]を表示し、続いて[ OK ]または[ FAILED ]を表示します。最後の行には、合格したテスト数が示されます。失敗時には、ファイル、行番号、期待値と実際の値が表示されます。

一部のテストを実行する

--gtest_filterフラグを使うと、一致するテストだけを実行できます。たとえば./my_tests --gtest_filter=MathTest.*のように指定します。対象を絞ったデバッグを高速化できます。

CTestと統合する

enable_testing()を呼び出し、gtest_discover_testsでバイナリを登録すると、CIでctestからテストスイートを実行できます。

# CMakeLists.txt
enable_testing()
include(GoogleTest)
gtest_discover_tests(my_tests)

健全なワークフロー

失敗するテストを書き、コードを実装し、テストが合格することを確認します。テストは高速かつ独立したものにして、変更のたびに実行できるようにします。

確認問題

main()がどのように提供されるか思い出してください。

まとめ

Google Testをセットアップしました。

  • FetchContent、パッケージ、またはサブモジュールで導入します
  • TEST(Suite, Name)でテストを宣言します
  • gtest_mainにリンクして自動的なmain()を使用します
  • ビルド、実行、フィルタリングを行い、CTestと統合します

よくある質問

「GTestのセットアップ」レッスンは無料ですか?

はい。「GTestのセットアップ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C++ Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C++ Academyコースには全4レッスンが含まれています。

「GTestのセットアップ」で何を学びますか?

フレームワークを追加して実行します ブラウザで直接実行するハンズオンコードでC++ Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C++ Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC++ Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「GTestのセットアップ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC++ Academyレッスンでコードを書いて実行できますか?

はい。すべてのC++ Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. GTestのセットアップ
  2. アサーションとマッチャー
  3. フィクスチャとセットアップ
  4. GMockによるモック
← C++ Academyに戻る