Google Test を使ってみる(その1:準備編)
これから数回に分けて「Google Test」についてご紹介したいと思います。
Windows+VSCode(Visual Studio Code)環境で Google Test を紹介している例があまり無かったので、今回は Google Test をソースコードで取得してビルドし、Google Test環境を準備するところまでご紹介します。
Google Test とは
#Google Test は、正式には「Google C++ Testing Framework」と言います。
Google Test は、xUnitアーキテクチャベースのC++言語用の単体テストフレームワークです。
C++用として開発されましたが、C言語用としても利用できます。
その他のC/C++用の単体テストフレームワークとしては CppUnit や Unity(ゲームエンジンの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 : ランタイムのビルドバージョンを示します。特に指定がなければ最新のものを選びます。
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 が動作するところを確認していきたいと思います。
ソフトウェアテストに関する技法やテクニックをまとめています。
テストに活用していただければ幸いです。