めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

googletestをWindows上のeclipseにて実行

めも。

セットアップ

Windows10にて。 必要なものをインストール。

googletestビルド

googletestはダウンロード後、ビルドする。

stackoverflow.com

eclipse でテストを実行

eclipse側設定

  1. [設定]>[GCC C++ Compiler]>[インクルード]>[インクルードパス]に ${workspace_loc:/テストする対象があるディレクトリ名}
  2. [設定]>[GCC C++ Compiler]>[インクルード]>[インクルードパス]に ビルドしたgoogletestのディレクトリへのパス\include
  3. [設定]>[MinGW C++Linker]>[ライブラリ]>[ライブラリ]に gtest を追加 (他必要なものを適宜追加)
  4. [設定]>[MinGW C++Linker]>[ライブラリ]>[ライブラリ検索パス]に ビルドしたgoogletestのディレクトリへのパス\lib を追加 (他必要なものを適宜追加)

テストプログラム

RUN_ALL_TESTS()ですべてのテストを実行する。最も簡単な Main.cpp は以下に。 テスト対象をインクルードしていないので、実際には #include XXX.h などの記述が入りテストを行う。

#include "gtest\gtest.h"

TEST()
{
    /* テスト内容を記述 */
}

int main(int argc, char **argv)
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

ビルド後、[実行]>[実行の構成]>[C/C++ Unit]>[新規構成]として新しい実行の構成をつくる。 その後、[C/C++ Testing]欄の Test Runner を [Google test runner] に切り替えて実行をする。

googletest記述例

基本的な記述例はgoogletest/samplesにある。 他の各種アサーションについては

に説明あり。 アサーションには ASSERT_*EXPECT_*の二種類があり、ASSERT_*は致命的なエラーとして関数の実行を中止する。 EXPECT_*での失敗( 例:EXPECT_EQ(a, b):a==bになってほしいが、実際はそうならなかった )は失敗しても実行を中断しない。

自分で定義したエラーメッセージを出力する場合は << で付け足せばいい。

EXPECT_EQ(1+1, 3) << " 1+1 shoud be 2" << i;

例えばfloat の比較は EXPECT_FLOAT_EQ(expected, actual)で行い、4ULPs(unit in the last place)の誤差まで許容する

Google C++ Mocking Framework

mocking frameworkと合わせて使いたい。

github.com

クックブックの日本語訳版は クックブック — Google Mock ドキュメント日本語訳

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。