SHOEISHA iD

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

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

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

特集記事

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

2:フィクスチャによる前準備と後始末

 「1:シンプルなテスト」で示したテストはどれもStackCalc<int> sc(5);から始まっています。このような前準備や後始末その他テストに必要な関数をフィクスチャ(fixture)で1つにまとめることができます。フィクスチャはtesting::Testから導出したクラスで定義し、必要な前準備/後始末はフィクスチャのコンストラクタ/デストラクタもしくは仮想関数SetUp()/TearDowm()で行います。

list-07
class StackCalcTest : public testing::Test {
public:
  StackCalcTest() : sc(5) {}
  virtual ~StackCalcTest() {}
protected:
  virtual void SetUp() { sc.throw_exception(); }
  virtual void TearDown() {}
  StackCalc<int> sc;
private:
};

 テスト内で使いたいメンバ変数/関数はフィクスチャのpublicまたはprotected部に置いてください。各テストはTEST_F(フィクスチャ名,テスト名) {...}とします。

list-08
TEST_F(StackCalcTest,initialize) {
  ASSERT_EQ(0, sc.size());
  ASSERT_TRUE(sc.empty());
  ASSERT_FALSE(sc.full());
}

TEST_F(StackCalcTest,push) {
  sc.push(3);
  ASSERT_FALSE(sc.empty());
  EXPECT_EQ(1, sc.size());
  EXPECT_EQ(3, sc.top());
  sc.push(4);
  ASSERT_FALSE(sc.empty());
  EXPECT_EQ(2, sc.size());
  EXPECT_EQ(4, sc.top());
}
...

 あらフシギ、どうしてテストの中からStackTest::scが参照できるんでしょ。気になって調べてみました。

 TEST_F(StackCalcTest,initialize) { うにゃうにゃ } は:

list-09
class StackCalcTest_initialize_Test : public StackCalcTest {
  virtual void TestBody();
  ...
};

void StackCalcTest_initialize_Test::TestBody() {
  うにゃうにゃ
}

に展開されていました。なるほど、各テストがフィクスチャの派生クラスのメンバ関数になっちゃうのか。テスト中で使用するメンバ変数/関数をprotected/publicに置くのも納得です。

 googletestの基本的な使い方はここまで。すっごく簡単です。

次のページ
3:型をパラメータ化したテスト

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

特集記事連載記事一覧

もっと読む

この記事の著者

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

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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー