undefined

bokuweb.me

【組み込み】ハードウェアに近い組み込み開発でもテストの自動化を行いたい - 環境構築編 -

普段、業務ではRenesasのRL78やRX、ARMのCoretexM0〜CoretexM3辺りを触ることが多いんですが、このあたりのハードウェアに近いレイヤーの開発はテストの自動化の浸透が遅れている領域の一つかと思っています。(自分の周りだけかもしれませんが・・。) Renesas製のマイコンとなるとホストもwindowsになる場合が多く、それがテスト自動化の導入のしきいを上げる要因のひとつになっているのでは?と考えています。

今回はwindows上でCygwin/Eclipse/googleTestを使用し、テストを行えるところまでのメモを記載します。 基本的には以下の書籍を参考にしていますが、書籍ではVirtualBox+Ubuntu上に環境を構築しています。 諸事情によりVirtualBox+Ubuntuが使用できない方の参考になればと思います。

参考書籍

タイトルにはありませんが”組み込み向け”を意識した内容になっています。(・・と思っています。)

Cygwinのインストール

  1. setupのダウンロード http://cygwin.com/install.htmlよりsetup.exeをダウンロードする

  2. setup.exeの実行 Root Directoryを聞かれますが、自分はC:\Windows\cygwinとしました (なぜかC直下だとGCCのインストールでエラーとなったため)

  3. パッケージの選択 「Deval」を必ず「install」にする
  4. PATHを通す PATHにC:\Windows\cygwinを追加する
  5. gccの確認
アクセスが拒否されました
>gcc -4
アクセスが拒否されました

上記のように「アクセスが拒否されました」となる場合、Cygwin\binのgcc.exe,g++.exeをリネームし、gcc-3(-4).exe、g++-3(-4).exeをgcc.exe,g++.exeにリネームする その後、gcc,g++でno input filesとなればOK

gcc: no input files
>g++
g++: no input files
  1. エラー対策 *** multiple target patterns. Stop.というエラーが発生する場合、Cygwin/binのmake.exeを以下のものに差し替える http://www.cmake.org/files/cygwin/make.exe

以上でCygwinのインストールは完了

Eclipseのインストール

  1. Eclipseのダウンロード Pleadesのプロジェクトページダウンロードする 環境に合わせC/C++と書いてある列のものを選択すること
  2. Eclipseのインストール ダウンロード後、任意のディレクトリに解凍する eclipse.exeを実行するとeclipseが立ち上がる

以上でEclipseのインストールは完了


ここからは「モダンC言語プログラミング」p147~とほぼ同じ内容となります 詳細はそちらを参照願います

Google Testのインストール

  1. Google Testのインストール http://code.google.com/p/googletest/downloads/listからダウンロードする ダウンロード後任意の場所に展開する

  2. ライブラリの作成

>cd gtest-1.7.0
>g++ -I.include -I. -c ./src/gtest-all.cc
>ar -rv libgtest.a gtest-all.o

これでlibgtest.aというライブラリファイルが生成されます g++のバージョンが変更になったら再度ライブラリを生成してください (ライブラリを再生成し忘れ原因不明のエラーで半日つぶしました)

Eclipseの設定

  1. プロジェクトの作成 [ファイル] - [新規] - [C++プロジェクト]を選ぶ [ツールチェーン]では[Cygwin GCC]を選択する
  2. GoogleTestの設定 プロジェクトのプロパティ―から[C/C++一般] - [パスおよびシンボル]を選ぶ [インクルード]タブを選択し、[追加] - [ファイルシステム]から(gtest-1.7.0/include)を選択 [ライブラリー・パス]タブを選択し、[追加] - [ファイルシステム]から(gtest-1.7.0)を選択 [ライブラリー]タブを選択し[追加]を押して、ファイル名に「gtest」を追加して[OK]、もう一度[追加]を押して、ファイル名に「pthread」を追加して[OK]

テストの実行

  1. 以下のファイルをプロジェクトに追加 add.cがテスト対象、add_test.ccがテストコードです

・add_test.cc

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

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

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

・add.c

#include "add.h"

int add(int i1, int i2)
{
    return i1 + i2;
}

・add.h

#ifndef ADD_H_
#define ADD_H_
#ifdef __cplusplus
extern "C" {
#endif

int add(int i1, int i2);

#ifdef __cplusplus
}
#endif

#endif /* ADD_H_ */
  1. ビルド・実行 ビルドに成功するとadd.exeが生成される add.exeを実行することでテストが開始される

テスト結果

たとえばadd_test.ccを以下のようにすると

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

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

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

失敗する

f:id:bokuweb:20141227214136j:plain

おまけ

「Grep Console」をeclipseの追加すると特定の文字を含むメッセージに色を付けることができる この機能を使うと[OK]、[PASSED]の時は緑色、[NG]、[FAILED]の時は赤色を表示するなどのカスタマイズが可能となる 些細なことかもしれませんが、個人的には結構重要かと思います オールグリーンのときは気持ちよくモチベーションあがりますからね