1:シンプルなテスト
では早速、googletestでStackCalcをテストしましょう。
#include <gtest/gtest.h>
#include <stdexcept>
#include "StackCalc.h"
// 初期化
TEST(StackCalcTest,initialize) {
StackCalc<int> sc(5);
ASSERT_EQ(0, sc.size()); // 要素数:0
ASSERT_TRUE(sc.empty()); // 空である
ASSERT_FALSE(sc.full()); // 満杯ではない
}
TEST(StackCalcTest,push) {
StackCalc<int> sc(5);
sc.push(3); // 3をpushすると
ASSERT_FALSE(sc.empty()); // 空じゃない
EXPECT_EQ(1, sc.size()); // 要素数:1
EXPECT_EQ(3, sc.top()); // 先頭は3
sc.push(4); // 4をpushすると
ASSERT_FALSE(sc.empty()); // 空じゃない
EXPECT_EQ(2, sc.size()); // 要素数:2
EXPECT_EQ(4, sc.top()); // 先頭は4
}
...
1つのテストはTEST(...) { から }まで。TEST()の引数はいくつかのテストをグループ化した名前(TestCase:テストケース)とテスト名。{}内にはフツーのC++コード、その中にASSERT_あるいはEXPECT_で始まる検証マクロを書きます。googletestはこのマクロでテストの成功/失敗を判定し、失敗時にはその詳細を報告してくれます。
それともう一つ、メインルーチンが必要です。メインルーチンはほんの数行:
#include <gtest/gtest.h>
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
これだけです。コンパイル/リンクして実行すると以下の出力が得られました。
StackCalc::top()をわざと間違った値(-1)を返すように書き換えると:
このように、失敗したテストの位置とその詳細を出力してくれます。


