CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CUnitでテストしてみる(その2)

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

前回、CUnitをビルドした。今回はプログラムを書いてgcovでラインカバレッジを測るところ>

とりえず、なんでもいいけどプログラムを書く。

#include 
#include <>
#ifdef TEST
extern FILE* hoge_stdout;
#define main hoge_main
#define stdout
#endif

int hoge=10;
int help(void)
{
  fprintf(stdout,"hello>
  return 0;
}
int main(int argc, 
{
  switch(argc){
  case 1:
    return help();
  case 2:
    hoge += atoi(argv[1]);
    fprintf(stdout,"hog>
    return 0;
  default:
    fprintf(stdout,"err>
    return 1;
  }
}

gccでコンパイル。オプションに -ftest-coverage -fprofile-arcs を付けとく。

a.outを実行後、gcovでa.outを分析してラインカバレッジをみる。

$ gcc -ftest-coverage -fprofi>
$ ./a.out 10
hoge=20
$ gcov hoge.c
File 'hoge.c
Lines executed:45.45>
hoge.c:creating 'hoge.c.gc>

45% らしい。ソースコードを確認してみる。

$ cat hoge.c.gcov
        -:    0:Source:hoge.c
        -:    0:Graph:hoge.gcno
        -:    0:Data:hoge.gcda
        -:    0:Runs:1
        -:    0:Programs:1<>
        -:    1:#include >
        -:    2:#include >
        -:    3:#ifdef TEST<>
        -:    4:extern FILE* hoge_stdout5:#define main>
        -:    6:#define stdo>
        -:    7:#endif
        -:    8: 
        -:    9:int hoge<>
        -:   10:int help(<>
    #####:   11:{
    #####:   12:  fprintf(stdout,"hello\n.");
    #####:   13:  return 0;
        -:   14:}
        -:   15:int main(<>
        1:   16:
        1:   17:  sw>
        -:   18:  case
    #####:   19:    return help();
        -:   20:  case 2:
        1:   21:    hoge += atoi(argv[1]
        1:   22:    >
        1:   23:    >
        -:   24:  default:
    #####:   25:    fprintf(stdout,"error\n");
    #####:   26:    return 1;
        -:   27:  }
        -:   28:}

##### の行が通過していないパス。

とりあえず、ラインカバレッジが測れるようになった。


実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)
(2006/07)
岸 哲夫

商品詳細を見る
スポンサーサイト


★☆★コメント★☆★

コメントの投稿

Name
Subject
Mail
URI
Comment
Pass
Secret 管理者にだけ表示を許可する

トラックバック

http://iyukki.blog56.fc2.com/tb.php/92-b127323d

 | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。