SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Google製のC++ Unit Test Framework「Google Test」を使ってみる

1:シンプルなテスト

 では早速、googletestでStackCalcをテストしましょう。

list-03 StackCalcTest.cpp
#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はこのマクロでテストの成功/失敗を判定し、失敗時にはその詳細を報告してくれます。

 それともう一つ、メインルーチンが必要です。メインルーチンはほんの数行:

list-04 main.cpp
#include <gtest/gtest.h>
int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

 これだけです。コンパイル/リンクして実行すると以下の出力が得られました。

 StackCalc::top()をわざと間違った値(-1)を返すように書き換えると:

 このように、失敗したテストの位置とその詳細を出力してくれます。

次のページ
ASSERT_?とEXPECT_?

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

επιστημη(エピステーメー)

C++に首まで浸かったプログラマ。Microsoft MVP, Visual C++ (2004.01~2018.06) "だった"りわんくま同盟でたまにセッションスピーカやったり中国茶淹れてにわか茶...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6656 2012/08/02 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー