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 buildcmake --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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- GTestのセットアップ
- アサーションとマッチャー
- フィクスチャとセットアップ
- GMockによるモック