Google Test を使ってみる(その1:準備編)

| 4 min read
Author: shuichi-takatsu shuichi-takatsuの画像

これから数回に分けて「Google Test」についてご紹介したいと思います。
Windows+VSCode(Visual Studio Code)環境で Google Test を紹介している例があまり無かったので、今回は Google Test をソースコードで取得してビルドし、Google Test環境を準備するところまでご紹介します。

Contents

Google Test とは

#

Google Test は、正式には「Google C++ Testing Framework」と言います。
Google Test は、xUnitアーキテクチャベースのC++言語用の単体テストフレームワークです。
C++用として開発されましたが、C言語用としても利用できます。

その他のC/C++用の単体テストフレームワークとしては CppUnitUnity(ゲームエンジンのUnityではない方) などがあります。
CppUnitはCとC++に利用できますが、UnityはC専用のようです。

準備(Windows環境)

#

Windows Mingw w64 のインストール

#

最近のWindowsPCはほぼ64bit版だと思いますので、64bit版OSを前提にご説明します。
Windowsで Google Test をソースコードからビルドするためにはビルド環境が必要です。
LinuxやmacOSならGCC(GNU Compiler Collection)が標準で装備されていますが、Windowsの場合は自前で導入するしかありません。
Windows環境用のGCCとしてはMinGWが有名です。
MinGWは32bit版なので、64bit版の MinGW-w64 をインストールします。

MinGW-w64のサイトを開きます。

ページの左にある Download のリンクをクリックします。
ダウンロードページの下の方にある「MingW-W64-builds」をクリックします。

MinGWのGithubのサイトに遷移します。
今回は以下のファイルを選択し、ダウンロードしました。
x86_64-12.2.0-release-posix-seh-rt_v10-rev0.7z

ここには数種類の7zファイルが格納されていますが、ファイル名の意味は以下になります。

  • i686/x86_64 : アーキテクチャを示します。
    • i686 : 32bit版
    • x86_64 : 64bit版
  • 12.2.0 : GCCのバージョンを示します。
  • release : リリースバージョンであること示します。
  • win32/posix : スレッドモデルを示します。
    • win32 : Windows スレッドモデルのみをサポートします。C++11以降の thread, mutex, future が使えません。
    • posix : POSIXスレッドをサポートしています。Unix、Linux、Windowsで使用できます。
  • dwarf/sjlj/seh : 例外処理ハンドリングを示します。
    • dwarf : 32bitバイナリのみサポートします。
    • sjlj : C++標準ライブラリを使用した例外処理をサポートします。
    • seh : Windows特化の構造化例外処理をサポートします。
  • rt_v10-rev0 : ランタイムのビルドバージョンを示します。特に指定がなければ最新のものを選びます。
Caution

Google Test をソースコードからビルドするには MinGW-w64のposix版 をダウンロードしなくてはなりません。win32版ではスレッドモデルの違いでビルドができませんでした。こちらに情報があります。

ダウンロードしたファイルを解凍し、適当なフォルダに配置します。(私は C:\gcc の下に配置しました)
ビルド時にGCCにパスが通っている必要があるので、環境変数に
C:\gcc\mingw64\bin
を追加しました。

CMake のインストール

#

今回は Google Test をソースコードで取得してビルドを行うので、CMake があると楽ちんです。

CMake は、コンパイラに依存しないビルド自動化のためのソフトウェアです。
様々なOSに移植されています。
CMake 自体はビルドを実施せず、実際のビルドには環境依存のビルドシステムを利用します。Windows環境では Visual StudioやMinGW、macOS環境では XCode、Linux/Unix環境では make などのネイティブのビルド環境が利用されます。

では、CMake をインストールします。

ここからCMakeのインストーラーをダウンロードします。

ダウンロードしたMSIファイルを実行し、「環境変数にパスを登録する」を選んで、残りの選択肢はデフォルトの設定でインストールを行います。
(筆者はスペースを含んだフォルダパスが嫌いなので、C:\CMake にインストールしました)

VSCode の拡張機能のインストール

#

VSCodeに以下の拡張機能を追加しました。

必須なのは C/C++ と CMake くらいだと思います。
(筆者の環境は、あれこれインストールしているうちに、こんなになってしまいました)

また、追加すると便利な拡張機能は以下のものでした。
Google Test で書いたテストランナーを起動してくれます。

Google Test のインストール

#

Google Test をインストールします。

次のコマンドで Google Test のソースコードをダウンロードします。
(2022/11/03時点での最新版は v1.12.1 でした。以下、ソースコードは googletest フォルダに配置されているとして話を進めます)
git clone https://github.com/google/googletest.git -b release-1.12.1

VSCode で Google Test のフォルダを選択し、拡張機能「CMake」でビルドを実行します。

VSCode の CMake拡張機能を使うとビルドが非常に楽ちんです。

ビルドが成功すると以下のバイナリが生成されます。

生成物:

\googletest\build\lib  
libgmock.a
libgmock_main.a
libgtest.a
libgtest_main.a

上記の4つのバイナリファイルを以下のフォルダ
C:\gcc\mingw64\x86_64-w64-mingw32\lib
下にコピーします。(パスは各自がMinGW-w64をインストールしたパスに合わせてください)

次にIncludeファイルをコピーします。
Google Test の Gtest,Gmock のIncludeフォルダ
\googletest\googletest\include\gtest
\googletest\googlemock\include\gmock
を「gtest」「gmock」フォルダごと
C:\gcc\mingw64\x86_64-w64-mingw32\include
下にコピーします。

ここまでで Google Test を実行する環境が整いました。

まとめ

#

今回は Google Test をソースコードで取得してビルドし、Google Test を実行できる環境を整えました。
次回は簡単なサンプルプログラムを実行して、Google Test が動作するところを確認していきたいと思います。

ソフトウェアテストに関する技法やテクニックをまとめています。

テストに活用していただければ幸いです。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)
  2. 自然言語処理初心者が「GPT2-japanese」で遊んでみた (2022-07-08)
  3. GitHub Codespaces を使いはじめる (2022-05-18)
  4. Jest再入門 - 関数・モジュールモック編 (2022-07-03)
  5. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  6. Nuxt3入門(第4回) - Nuxtのルーティングを理解する (2022-10-09)
  7. Nuxt3入門(第3回) - ユニバーサルフェッチでデータを取得する (2022-10-06)
  8. 第1回 OpenAPI Generator を使ったコード生成 (2022-06-04)
  9. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する (2022-10-28)
  10. Nuxt3入門(第2回) - 簡単なNuxtアプリケーションを作成する (2022-10-02)