Google test を導入してみる

Table of Contents

  1. Google test を導入してみる:GTEST:
    1. Google test のインストール(MSYS2環境)
    2. Google test の動作確認

Google test を導入してみる :GTEST:

 普段、マイコンを使った組み込みシステムの開発業務をしている中で、 テスト駆動開発の必要性を感じることがあり、ちょっとずつでも単体テスト手 法を学んでいこうかなぁ、というモチベーションがありまして。今回はGoogle Test を導入してまずは環境を整えてみることにします。

Google test のインストール(MSYS2環境)

参考: https://manabisystem.com/how-to-install-google-test-on-msys2/

 諸々の事情から Windows 環境がメインなのでMSYS2環境に導入します。上記 によると本家のGit Hub上にあるソースコードではうまくいかないらしいので、 pacman を使って導入するのが吉らしいです。

$ pacman -S mingw-w64-x86_64-gtest

何の問題もなくインストールできました(バージョンは、 mingw64/mingw-w64-x86_64-gtest 1.11.0-5 でした)。

Google test の動作確認

 インストールした Google Test を早速ためしてみます。インターネット上 を探せば例はいくつもでてきますが、勉強中の手持ちの本で、「モダンC言語 プログラミング, 花井志王,ASCII DWANGO」、があるのでこの中での例を試して みます。

※参考書の中では eclipse を使って Google Test を動かしていますが、簡単 な例ならコマンドラインからでも十分なのでコマンドラインで g++ を使いま す。

準備するのは4つのコードです。

・ add_test.cc ・・・ テストコード。

・ add.c, add.h ・・・ 検証対象の関数(add)。

・ main.c ・・・ main 関数。

[add_test.cc]

#include "gtest/gtest.h"
#include "add.h"

TEST(AddTest, onePlusTwoGivesThree) {
    EXPECT_EQ(3, add(1, 2));
}

[add.h]

#ifndef ADD_H_
#define ADD_H_

#ifdef __cplusplus
extern "C" {
#endif

int add(int i1, int i2);

#ifdef __cplusplus
}
#endif

#endif

[add.c]

#include "add.h"

int add(int i1, int i2) {
    //return 0; ← Fail を出したいときのコード
    return i1 + i2;
}

[main.c]

#include "gtest/gtest.h"

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

この4つのコードを、コマンドラインからg++ を使ってコンパイルすると test.exe ができ、テストが実行できます。なお、コンパイル時には gtest と pthread をライブラリとして使用しています(参考書に書いてある通りです)。

g++ add_test.cc add.c main.c -Lc:/msys64/mingw64/lib -lgtest -lpthread -o test

結果は次の通りとなり、テストに成功しました。

 # # ./test.exe
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from AddTest
[ RUN      ] AddTest.onPlusTwoGivesThree
[       OK ] AddTest.onPlusTwoGivesThree (0 ms)
[----------] 1 test from AddTest (0 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (0 ms total)
[  PASSED  ] 1 test.

これで Google Test できる環境が動作することが確認できました。今後少しず つ学習を進めていきたいと思います。