Code Composer StudioでテストフレームワークCUnitを使ってみる

未完成なエントリーなんだけど、手直ししながら進みましょうという事で公開します。指摘事項等宜しくお願いします。
#ライブラリの生成
IBM Code Composer Studio（以下CCS）を起動し、とりあえず新たにワークスペースを作る。
![image001.png](https://qiita-image-store.s3.amazonaws.com/0/21786/9189707b-c526-0ba3-92af-d29419a079c7.png)
CCSプロジェクトを新規作成（メニューからFile ⇒ New ⇒ CCS Project）する。
![image003.png](https://qiita-image-store.s3.amazonaws.com/0/21786/262ad405-5202-15e1-ba63-00c40a744fb9.png)
プロジェクト名は「CUnitLib」とした。まず、CUnitのライブラリを作成するので、Output typeに「Static Library」を設定する。Deviceはターゲットに合わせて適宜設定する。テンプレートは純粋な空プロジェクト「Empty Project」を選択した。
![image005.png](https://qiita-image-store.s3.amazonaws.com/0/21786/3ec44c70-d4a8-bba9-ba4b-17915d4b6b45.png)
プロジェクトはこんな感じ。
![image007.png](https://qiita-image-store.s3.amazonaws.com/0/21786/c2507384-e4d9-6b3e-6820-4dea98c9331c.png)
ライブラリのコードをインポートする。右クリックから、Importを選択する。General⇒File Systemを選択してNext。
![image009.png](https://qiita-image-store.s3.amazonaws.com/0/21786/1df53e2a-96e4-b31e-5c18-0cb3be9a0b27.png)
コード（\*.cと\*.h）のみを選択してインポートする。ディレクトリ構造はそのまま採用した。
![image011.png](https://qiita-image-store.s3.amazonaws.com/0/21786/a94a4074-3747-005c-36dd-0d38507378a6.png)
こんなかんじ。
![image013.png](https://qiita-image-store.s3.amazonaws.com/0/21786/fe88ab69-d8de-e188-0ce9-18d38d06c94f.png)
Sourcesを選択して右クリックからProperties。
![image016.png](https://qiita-image-store.s3.amazonaws.com/0/21786/6e10cd6d-3f2d-5e74-7098-f9f1df84fa37.png)
右下ブロックのAdd dir to #include search pathに追加する。＋マークを押下。WorkspaceからHeadersを選択する。
![image018.png](https://qiita-image-store.s3.amazonaws.com/0/21786/94b95b88-3a02-e0ad-f521-b764fd9703ec.png)
するとこう指定されるのでOKを押下。
![image020.png](https://qiita-image-store.s3.amazonaws.com/0/21786/67221c21-6602-7d9c-9c86-1c24e5877223.png)
指定したインクルードディレクトリが表示されていることを確認してOKを押下。
![image022.png](https://qiita-image-store.s3.amazonaws.com/0/21786/896ac078-27ec-8b6f-6ba9-1a67f32753ba.png)
Bulid All(Ctrl+B)すればCUnitLib.libが生成された。これを使ってテストを書いていく。
![image024.png](https://qiita-image-store.s3.amazonaws.com/0/21786/a5654c91-4d69-fc85-a688-266d3112f4b1.png)
#単体テストを作る
早速サンプルを作ってみよう。Output typeはExecutableを選択し、テンプレートとしてmain.cを含むEmpty Projectを選択した。
![image026.png](https://qiita-image-store.s3.amazonaws.com/0/21786/7befafed-beb4-3886-8557-0a2913de072b.png)
プロジェクトのPropertiesを選んで、インクルードディレクトリを追加する。
![image028.png](https://qiita-image-store.s3.amazonaws.com/0/21786/f95e23f3-ad72-a67d-d7f8-f86ca8f8670a.png)
Workspaceの中からHeadersを選択する。
![image030.png](https://qiita-image-store.s3.amazonaws.com/0/21786/d43fd0ab-0e30-bb42-5efb-312ba320d45e.png)
こんな感じ。OKを押下。
![image032.png](https://qiita-image-store.s3.amazonaws.com/0/21786/2bcfb7a9-4970-f9d1-5c7f-260db3dc07b8.png)
つづいて、ライブラリを指定する。LinkerからAddを行った。
![image036.png](https://qiita-image-store.s3.amazonaws.com/0/21786/27ed8a53-8ba5-5d5a-7ce4-43bd8d803b3b.png)
これもWorkspaceの中から先ほど生成したライブラリを指定する。
![image038.png](https://qiita-image-store.s3.amazonaws.com/0/21786/e5941b63-4939-5629-df05-de1dc5c34522.png)
こんな感じ。OKを押下。
![image040.png](https://qiita-image-store.s3.amazonaws.com/0/21786/1a930013-9240-770d-f8e9-990726c9a279.png)
こんな風に登録されたので、Propertiesを保存するためOKを押下。
![image042.png](https://qiita-image-store.s3.amazonaws.com/0/21786/b35fe396-8140-7040-1f4b-f419f330977a.png)
まいんちゃん…もとい、main.cを編集する。
まぁ、何でもいいんだけど、一般的なヤツを。

```c:main.c
/*
 * main.c
 */

#include <CUnit.h>
#include <Console.h>

int add(int a, int b);

/* 初期化関数*/
int hoge_setup(void)
{
	return 0;
}

/* 後始末関数*/
int hoge_teardown(void)
{
	return 0;
}

/* テスト関数*/
void test_hoge_add(void)
{
	/* 3 + 4 = 7 */
	CU_ASSERT_EQUAL(add(3,4), 7);
}

/* テスト関数をまとめる*/
static CU_TestInfo test_hoge[] = {
	{ "単純加算", test_hoge_add },
	CU_TEST_INFO_NULL, /* 末尾はCU_TEST_INFO_NULLで終端*/
};

/* テストスイートを定義する*/
static CU_SuiteInfo suites[] = {
	{ "hogeのテスト", hoge_setup, hoge_teardown, test_hoge },
	CU_SUITE_INFO_NULL, /* 末尾はCU_SUITE_INFO_NULLで終端*/
};

int add(int a, int b)
{
	return 0;
}

void main(void) {
	/* 初期化*/
	if ( CU_initialize_registry() ) {
		printf("\nInitialization of Test Registry failed.");
	} else {
		CU_register_suites(suites); /* テスト・スイート登録*/
		CU_console_run_tests(); /* テスト実行*/
		CU_cleanup_registry(); /* 後始末*/
	}
}
```

こんな感じ。ビルドしてCUnitSample.outが生成されればOK・・・だと思うんだけど、実は今日は実行環境を用意し忘れたので本当にちゃんと動くかどうか、つづきは来週ｗｗｗｗｗｗ
![image044.png](https://qiita-image-store.s3.amazonaws.com/0/21786/6020580a-ed69-4e71-c1e4-2e2d14031436.png)