LoginSignup
0
0

More than 5 years have passed since last update.

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

Posted at

未完成なエントリーなんだけど、手直ししながら進みましょうという事で公開します。指摘事項等宜しくお願いします。

ライブラリの生成

IBM Code Composer Studio(以下CCS)を起動し、とりあえず新たにワークスペースを作る。
image001.png
CCSプロジェクトを新規作成(メニューからFile ⇒ New ⇒ CCS Project)する。
image003.png
プロジェクト名は「CUnitLib」とした。まず、CUnitのライブラリを作成するので、Output typeに「Static Library」を設定する。Deviceはターゲットに合わせて適宜設定する。テンプレートは純粋な空プロジェクト「Empty Project」を選択した。
image005.png
プロジェクトはこんな感じ。
image007.png
ライブラリのコードをインポートする。右クリックから、Importを選択する。General⇒File Systemを選択してNext。
image009.png
コード(*.cと*.h)のみを選択してインポートする。ディレクトリ構造はそのまま採用した。
image011.png
こんなかんじ。
image013.png
Sourcesを選択して右クリックからProperties。
image016.png
右下ブロックのAdd dir to #include search pathに追加する。+マークを押下。WorkspaceからHeadersを選択する。
image018.png
するとこう指定されるのでOKを押下。
image020.png
指定したインクルードディレクトリが表示されていることを確認してOKを押下。
image022.png
Bulid All(Ctrl+B)すればCUnitLib.libが生成された。これを使ってテストを書いていく。
image024.png

単体テストを作る

早速サンプルを作ってみよう。Output typeはExecutableを選択し、テンプレートとしてmain.cを含むEmpty Projectを選択した。
image026.png
プロジェクトのPropertiesを選んで、インクルードディレクトリを追加する。
image028.png
Workspaceの中からHeadersを選択する。
image030.png
こんな感じ。OKを押下。
image032.png
つづいて、ライブラリを指定する。LinkerからAddを行った。
image036.png
これもWorkspaceの中から先ほど生成したライブラリを指定する。
image038.png
こんな感じ。OKを押下。
image040.png
こんな風に登録されたので、Propertiesを保存するためOKを押下。
image042.png
まいんちゃん…もとい、main.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・・・だと思うんだけど、実は今日は実行環境を用意し忘れたので本当にちゃんと動くかどうか、つづきは来週wwwwww
image044.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0