Skip to main content

C++ + GoogleTest

方針

  • サードパーティライブラリ GoogleTest を使う

前提

bash
brew install googletest

プロジェクト作成

bash
mkdir -p ~/workdir/SampleCpp
code ~/workdir/SampleCpp

最小のコード

sample_test.cpp
#include <gtest/gtest.h>

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

TEST(AddTest, TwoPlusThreeIsFive) {
EXPECT_EQ(5, add(2, 3));
}

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

決まりごと

  • TEST マクロ内のブロックにテストコードを書く。 TEST(<テストスイート名>, <個々のテスト名>)
  • EXPECT_EQ() などのマッチ用メソッドを呼ぶ
  • -lgtest_main オプションを付けてビルドするか、 main で RUN_ALL_TESTS() を呼ぶことで すべての TEST マクロが実行される

実行

bash
PREFIX=$(brew --prefix googletest)

g++ -std=c++20 \
-I"${PREFIX}/include" \
sample_test.cpp \
-L"${PREFIX}/lib" -lgtest -lgtest_main -pthread \
-o sample_tests

./sample_tests

表示例

成功時

txt
% ./sample_tests 
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from AddTest
[ RUN ] AddTest.TwoPlusThreeIsFive
[ OK ] AddTest.TwoPlusThreeIsFive (0 ms)
[----------] 1 test from AddTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[ PASSED ] 1 test.

以下広告