はじめに
2013年に発売されたモダンC言語プログラミングを読書中です。その中でC言語の単体テストツールとして、Google Testが紹介されております。発売から時間が経過し、インストール方法が変わっていたので、手順メモを記載します。
環境
OS | Ubuntu 20.04.1 LTS |
---|---|
IDE | Eclipse IED Version 2020-12(4.18.0) |
OpenJDK 11とEclipseのインストール
OpenJDK 17 のインストールと設定(Ubuntu 上)
Eclipse(2019年12月版)のインストール,日本語化,基本操作(Ubuntu 上)
上記のWebページがわかりやく、参照させていただきました。
Google Testのインストール
下記GitHubからファイルをcloneしてきて利用します。書籍内ではzipファイルをダウンロードしてきて利用する方法でした。インストール手順はGitHubに記載があり、引用します。事前にCMakeをインストールしておく必要があります。
github.com
git clone https://github.com/google/googletest.git -b release-1.10.0 cd googletest # Main directory of the cloned repository. mkdir build # Create a directory to hold the build output. cd build cmake .. # Generate native build scripts for GoogleTest. make sudo make install # Install in /usr/local/ by default
EclipseとGoogle Testの連携
本題です。
1. includeディレクトリの指定
Project Explorer(左のペイン)で対象のプロジェクトを右クリック、最下段にある[Properties]をクリック。
[C/C++ General] - [Paths and Symbols]を選びます。真ん中付近ので[includes]のタブを選択し、[Language]から[GNU C++]を選び[Add]を選択します。
ここまでは書籍と同じです。ここで選択するパスが変わっています。下図のように、[/usr/local/include]を指定します。このパスはGoogle Testのインストール先によって変わりますが、デフォルトだと[/usr/local/include]になります。
2. ライブラリパスの指定
1. で開いている[Properties]画面で、[Library Paths]のタブを選択し、右側の[Add]をクリックします。

[File system]をクリックして、Google Testをインストールしたディレクトリを選び、[OK]をクリックします。ここで、インストールしたディレクトリとはgit cloneしてきたディレクトリになります。例えば、/home/user/ディレクトリでgit cloneした場合、/home/user/googletest が指定するディレクトリになります。下記に私の環境での設定画面を示します。

3. ライブラリの追加
1. で開いている[Properties]画面で、[Library]のタブを選択し、右側の[Add]をクリックします。そして、[gtest]と入力し[OK]をクリックします。同様に再度[Add]で追加画面を開き[pthread]と入力し[OK]をクリックします。

以上で、プロジェクトへの設定は完了です。
Google Testの利用
設定ができたので、コード内にテストコードを埋め込んで利用します。add.h, add.c, add_test.ccの3ファイルを用意します。コードは下記です。add.cは意図的にfailさせるために0を返すようにしています。
#ifndef ADD_H_ #define ADD_H_ #ifdef __cplusplus extern "C"{ #endif int add(int i1,int i2); #ifdef __cplusplus } #endif
#include "add.h" int add(int i1,int i2){ return 0; }
#include "gtest/gtest.h" #include "add.h" TEST(AddTest, onePlusTwoGivesThree){ EXPECT_EQ(3, add(1,2)); } int main(int argc, char **argv){ ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }

以上で、単体テストがC言語でできました!!
おわりに
書籍と現在が微妙に変わっていたので、その差分を記載しました。GitHub経由でGoogle Testを利用する方の参考になれば幸いです。