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.
以下広告