C言語でEV3開発(6)
どもです。
今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境についてです。
前回のエントリーでは、google testのコードをプロジェクトに取り込み、テストコードと一緒にビルドする方法について書きました。
そこで今回は、google testを静的ライブラリとしてビルド、リンクして実行ファイルを生成する方法について紹介します。
なお、google testのコードをダウンロード・展開してあることを前提とします。
場所は、
~/gtest
を想定します。
1. 静的ライブラリのビルド
では、実際にビルドするための手順を、以下に示します。
ev3@ev3-VirtualBox:cd gtest
ev3@ev3-VirtualBox:~/gtest$ ./configure
v3@ev3-VirtualBox:~/gtest$ export GTEST_DIR=~/gtest
ev3@ev3-VirtualBox:~/gtest$ g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
ev3@ev3-VirtualBox:~/gtest$ ar -rv libgtest.a gtest-all.o
ar: creating libgtest.a
a - gtest-all.o
ev3@ev3-VirtualBox:~/gtest$ cd make
ev3@ev3-VirtualBox:~/gtest/make$ make gtest_main.o
g++ -isystem ../include -I.. -g -Wall -Wextra -pthread -c \
../src/gtest_main.cc
ev3@ev3-VirtualBox:~/gtest/make$ ar -rv libgtest_main.a gtest_main.o
ar: creating libgtest_main.a
a - gtest_main.o
ev3@ev3-VirtualBox:~/gtest/make$ cp ./libgtest_main.a ../
ev3@ev3-VirtualBox:~/gtest/make$ cd ../
ev3@ev3-VirtualBox:~/gtest$ ls -la *.a
-rw-rw-r-- 1 ev3 ev3 932674 xxx x xxxxx libgtest.a
-rw-rw-r-- 1 ev3 ev3 19972 xxx x xxxxx libgtest_main.a
以上、最後に静的ライブラリが2つ作成されています。
2. 静的ライブラリのリンクの設定
ここでは、静的ライブラリをリンクするための設定について記載します。
といっても、手順は簡単。
eclipseのプロジェクトプロパティで、[C/C++ビルド]-[設定]-[ツール設定]-[GCC C++Linker]-[ライブラリー]で、以下の設定を行います。
[ライブラリー(-l)]
pthread
gtest
gtest_main
[ライブラリ検索パス(-L)](1. 静的ライブラリのビルドで、静的ライブラリが出力されたディレクトリ)
以上で、ライブラリの設定は完了です。
3. テストコード
実際にライブラリを使用したテストコードと、テストの実行です。
まず、以下のようなクラス、およびメソッドを作成します。
//.h
class CGTestTarget {
public:
CGTestTarget();
virtual ~CGTestTarget();
int TestFunction(int n1, int n2);
};
//.cpp
#include "CGTestTarget.h"
using namespace std;
CGTestTarget::CGTestTarget() {}
CGTestTarget::~CGTestTarget() {}
int CGTestTarget::TestFunction(int n1, int n2) {
return (n1 + n2);
}
次にテストコードです。今回は、「TestFunction」というメソッドのテストを実行します。
実際のテストコードは、以下。
//ソースファイル
#include
#include "gtest/gtest.h"
#include "CGTestTarget.h"
using namespace std;
TEST(CTestTargetTest, Test001) {
// 入力変数
int n1;
int n2;
int actual;
int expect;
CGTestTarget target;
// 入力値の設定
n1 = 2;
n2 = 3;
expect = 5;
// テストの実効
actual = target.TestFunction(n1, n2);
// 結果の確認
ASSERT_EQ(actual, expect);
}
なお、コード上の"gtest/gtest.h"をインクルードするためには、"gtest/include"フォルダをインクルードパスに追加しておく必要があります。
これまでの設定、およびコードを作成してビルドします。
ビルドされたファイルを実行することで、単体テストが実行されます。
なお、今回の結果では、以下のようになります。
テストの内容は、非常に単純なので、ここは割愛します。
結果を見ての通り、1ケースのテストが実行され、結果が「OK」となっています。
4.まとめ
以上がgoogle testをライブラリ化し、それを使用して単体テストを実行するための手順になります。
ではっ!
ディスカッション
コメント一覧
まだ、コメントがありません