1. GoogleTestとは
GoogleTestとはGoogleが提供しているC++用の単体試験フレームワークです。
アサーションセットが豊富で、簡単に導入できます。
2. 使い方
2.1 導入
Visual Studio Installerを起動します。
「C++によるデスクトップ開発」を選択し、インストールします。
上記ツールセットの中にGoogleTestも入っているので、これで準備完了です。
2.2 GoogleTestの追加
Visual Studioでテストしたいソリューションを起動します。
ソリューション上を右クリック、追加、新しいプロジェクトを選択。
GoogleTestを選択し、適当な名前を付けて作成します。
この時、テストしたいプロジェクトを選択しておきましょう。
3. アサーション一覧
ASSERT_*から始まる場合、失敗したら中断し、EXPECT_*から始まる場合は、失敗しても続行します。
4.1 True or False
Assert | Expect | 説明 |
---|---|---|
ASSERT_TRUE(data) | EXPECT_TRUE(data) | dataがTrueであるか |
ASSERT_FALSE(data) | EXPECT_FALSE(data) | dataがFalseであるか |
4.2 2値の比較
Assert | Expect | 説明 |
---|---|---|
ASSERT_EQ(val1, val2) | EXPECT_EQ(val1, val2) | val1 == val2 |
ASSERT_NE(val1, val2) | EXPECT_NE(val1, val2) | val1 != val2 |
ASSERT_LT(val1, val2) | EXPECT_LT(val1, val2) | val1 < val2 |
ASSERT_LE(val1, val2) | EXPECT_LE(val1, val2) | val1 <= val2 |
ASSERT_GT(val1, val2) | EXPECT_GT(val1, val2) | val1 > val2 |
ASSERT_GE(val1, val2) | EXPECT_GE(val1, val2) | val1 >= val2 |
EQとかNEとかの正式名称を載せておきます。
EQ: Equal
NE: Not Equal
LT: Less than
LE: Less than or Equal to
GT: Greater than
GE: Greater than or Equal to
4.3 文字列の比較
Assert | Expect | 説明 |
---|---|---|
ASSERT_STREQ(str1, str2) | EXPECT_STREQ(str1, str2) | str1 = str2 |
ASSERT_STRNE(str1, str2) | EXPECT_STRNE(val1, val2) | str1 != str2 |
ASSERT_STRCASEEQ(str1, str2); | EXPECT_STRCASEEQ(val1, val2) | str1 == str2 (大文字小文字を無視) |
ASSERT_STRCASENE(str1, str2); | EXPECT_STRCASENE(val1, val2) | str1 "= str2 (大文字小文字を無視) |
これらのアサーションはwchar_t*型の文字列比較に使います。
C++でよく使うstring型はEXPECT_EQで比較します。
5. 使用例
今回は以下のような、入力値を2倍するだけの関数をテストしてみます。
int Twice(int val) {
return val * 2;
}
テストコードを記述します。
TEST()マクロ内にテストコードを記述し、テストを実行します。
TEST(hoge, failed)は値が一致してないので失敗します。
TEST(hoge, success) {
EXPECT_EQ(Twice(2), 4);
EXPECT_EQ(Twice(INT_MAX), 4294967294);
}
TEST(hoge, failed) {
EXPECT_EQ(Twice(2), 2);
}
1つでもアサーションが失敗した場合、全体のテスト結果が失敗となるので、留意しておきましょう。