Cygwin で CUnit とかカバレッジ測定とか
Cygwin で cunit 使ったテストとカバレッジを計測する必要が出たので,作業内容を記録しておく
Cygwinがインストールされているのは前提としておく.
ツールの取得,インストール
- CUnit(C Unit Testing Framework | SourceForge.net)
- Cygwin には CUnit パッケージが用意されているらしいのでそれを使った.
- lcov(Linux Test Project - Coverage » lcov)
- 入手はgitで行った.
$ git clone https://github.com/linux-test-project/lcov.git
- lcovのインストールはmakeコマンドで(アンインストールの場合は make uninstall とする).
$ make install
CUnit でテスト
- テストコード詳細は省略.実行の手順をざっくりと記述すると,以下の流れでプログラムを書けばいい.
- CU_initialize_registry() を実行して
- CU_add_suite を実行してテストスィート(CU_pSuite 型)のインスタンスを取得して
- テストスィートに CU_add_test でテストを追加して
- CU_console_run_tests(); でテストを実行して
- CU_cleanup_registry(); で後片付けをして,おわり
- コンパイル時の注意
- CUnit.hをincludeする.テストの実行の仕方によってConsole.hなどをincludeする.
- コンパイル時は CUnit.h 等のヘッダファイルが含まれるディレクトリを指定する.今回の場合は /usr/include/CUnit/
- リンク時には -lcunit を指定する.
- テストの実行
- テストコードをリンクして実行ファイルを作り,ホスト上で実行する.コンソールアプリとして作った場合はメニュー形式で実行したりできるので,わかりやすい(この文章を見ている人はなんのことかわからないかもしれませんが,一度やってみてください).
lcovによるカバレッジ測定
- オプション
- gcc
- コンパイル時およびリンク時に -ftest-coverage -fprofile-arcs を指定
- 詳しくはDebugging Options - Using the GNU Compiler Collection (GCC)参照
- gcc
-
- lcov
- -c で解析データのキャプチャを行うことを示す
- "-d <ディレクトリ名>" で,解析ファイルのディレクトリを指定
- "-o <ファイル名>" で出力ファイル名(.infoファイル)を指定
- lcov
測定結果をHTML化
lcov付属のgenhtmlを使う.
$ genhtml -o output_directory infofile.info
output_directory というディレクトリに結果のHTMLファイルが格納される