#blognavi
UnityとCMockなどを統一して使える環境みたいなCeedlingを使ってみる。
ScalaでいうところのSBTみたいな感じ。Rubyが必要

1.インストール
RubyとRakeとGEMがそろっている環境で以下を実行
gem install ceedling

2.プロジェクトの作成
インストールされるとceedlingが実行できるようになるので、プロジェクトを新規作成する。
ceedling new testprj
testprjはプロジェクト名。実行すると、プロジェクトが作成される。
testprj
 |
 +-- build
 +-- project.yml
 +-- rakefile.rb
 +-- src
 +-- test
 +-- vendor
この中のsrcフォルダにProdcutコード、testフォルダにテストコードを作る。

src/myfunc.h
#ifndef __MYFUNC_H__
#define __MYFUNC_H__

int myfunc(int a, int b);

#endif

src/myfunc.c
#include <stdio.h>
#include "myfunc.h"
#include "dummy.h"

int myfunc(int a, int b)
{
	printf("test\n");
	dummy();
	return (a+b);
}

src/dummy.h
#ifndef __DUMMY_H__
#define __DUMMY_H__

int dummy(void);

#endif

src/dummy.c
#include "dummy.h"

int dummy(void)
{
     return 0;
}


test/test_myfunc.c

#include "unity.h"

#include "myfunc.h"
#include "mock_dummy.h"

void setUp(void)
{
}

void tearDown(void)
{
}


void test_Myfunc(void)
{
	dummy_ExpectAndReturn( 0 );

	TEST_ASSERT_EQUAL( 3, myfunc(1,2) );

}


CMockは、ダミー関数のヘッダに"mock_"をつけてインクルードすれば、自動的に作成される。便利!

テスト関数は、ファイル名に注意する。test_XXX.cにする必要がある模様で、ファイル名がNGだと
Ceedlingに認識されずに、テストが実行されない。認識されているファイル数を表示するには以下の
コマンドを実行する。

rake files:test
(in PATHTOPROJ/testprj)
test files:
 - test/test_myfunc.c
file count: 1


3.テスト実行
テストを実行するのは、
rake test:all
を実行する。

Test 'test_myfunc.c'
--------------------
Running test_myfunc.out...

-----------
TEST OUTPUT
-----------
[test_myfunc.c]
  - "test"
  - ""

--------------------
OVERALL TEST SUMMARY
--------------------
TESTED:  1
PASSED:  1
FAILED:  0
IGNORED: 0

なお、他のコマンドを表示するには、rake -Tを実行する。




カテゴリ: [日記] - &trackback() - 2016年04月03日 11:04:50
名前: コメント:
#blognavi
最終更新:2016年04月03日 11:25