can't go to sleep

組み込み開発の多くをRubyで自動化することに興味があります

UnityとCMock その1

UnityとCMockの使い方について、非常に簡単に解説します。
ただし、今回ははCMock抜きで解説します。(CMockの設定はやや面倒なため)
※ここでは、2013-3-15のバージョンを使用しています。バージョンが異なる場合は設定方法が異なる可能性があります。

事前準備

まずRubyとgitをPCにインストールします。windowsでも問題なくインストールできます。

次に、gitでUnityとCMockを取得します。(CMockは今回は使用しませんが、とりあえず)
https://github.com/ThrowTheSwitch/Unity
https://github.com/ThrowTheSwitch/CMock

例えば、C:\直下あたりで、右クリックして、git bashを立ち上げて、
git clone https://github.com/ThrowTheSwitch/Unity
とすれば、GitHubから最新のUnityが取得できます。
CMockも同様に取得してください。

フォルダ構成

GitHubから取得したunityフォルダの中に、buildフォルダを作成し、次に、testフォルダの中のtestparameterized.cとtestunity.c以外を削除してください。
これで、フォルダ構成は完了です。

テストの実行条件の作成と実行方法

コマンドプロンプトで先ほど調整したunityフォルダに移動し「rake」を実行してください。ここで、赤、黄、緑の表示が出ると、設定完了です。ここで、rakeができない場合は、上記フォルダ構成が守れていないか、あるいはgccがインストールされていないか、unityのバージョンが違うかのいずれかになります。
gccは、あまり評判は良くないですが MinGW当たりで取得してください。 http://www.mingw.org/
Cygwinは評判は良いですが、インストールがMinGWに比べると多少面倒なので・・・。

テスト対象ソースコードとテストケースの作成方法

テストケースの作成方法は、Unityのdocsフォルダ内にあるサマリ、あるいはexamplesのtestフォルダ内にあるファイルを参照するのが良いと思いますが、基本的には、testフォルダ内に、test***.c というファイルを作成し、その中にtest***という関数を作成すると、自動的にそのテストが実施されます。
次に、テスト対象ソースコードの設定方法ですが、gcc_32.ymlファイルを開き、compiler:のsource_path:の後ろの方にある''で囲まれた領域に記述してください。相対パスでも絶対パスでも問題なく動作するはずです。また、必要に応じてincludes:のitem:に、パスを追加してください。
また、テスト対象のソースコードですが、config.yml中のsource_path:にパスを記入してください(面倒な場合は、とりあえずunity.cと同じsrcフォルダ内に入れることで、テストが実行可能です)。

備考

ちなみに、unityではテスト方法の変更は rakefile.rb, rakefile_helper.rb, **.yml(unityフォルダ内では、gcc_32.ymlがデフォルトで設定されています。)の3つのファイルを変更することで対処します。ただし、基本的にはconfigファイルとなる**.ymlの内容変更だけで、テスト方法を変更することが可能です。
また、テストはコマンドプロンプトでUnityフォルダまで移動し(cdコマンドなどで)、rakeコマンドを実行することで実行できます。
gcc_32.ymlは、ファイル名からするとコンパイラの設定のみ記述しているようですが、それ以外にもUnityやCMockやCeedlingの設定などをすべて記述する、非常に重要な設定ファイルになります。

次回

次は、CMockの使い方の解説を書く予定です。
CMockは強力でしかも動くとかなり感動的なので、ぜひとも使用したいところですが、いろいろと設定が手間なので、説明も一苦労です。GitHubをもう少し有効活用できると、説明も見る方も便利だと思っています。