CUnit/CppUnitとは一味違ったテスト環境です。最大の売りはその手軽さ。JUnit/NUnit並みのお手軽さを紹介します。テスト実行Page3提供されるASSERT群おまけとまとめはじめに単体テストを効率的に行うため、テスト対象となる言語に応じてさまざまなフレームワーク「xUnit」がリリースされています。JavaならJUnit、.NETならNUnit、CならCUnit、C++ならCppUnitあたりがそれぞれの代表格といったところでしょうか。マイクロソフトのオンラインマガジン「MSDNマガジン2008年2月号」で、Windows環境に特化したC/C++対応の単体テストフレームワーク「WinUnit」が紹介されています。実行環境がWindowsに限定されてはいるものの、それを補って余りある使い勝手の良さを実現しています。CUnit/CppUnitの問題点CUnitによる単体テストの例を示します。*/以降の部分はテストそのものではありません。いくつものテスト関数をまとめたスイートを組み上げ、スイート内のテスト関数を順に呼び出してはその結果を収集する(ライブラリ提供の)実行ルーチンを起動しています。テストの追加/削除あるいはテスト関数名の変更に伴ってスイート組み上げ部の修正が必要となります。そのためスイートの修正漏れがあると、コンパイル/リンクエラーとなったり、追加したテストが実行されません。かたやこちらは同じテストをNUnit(C++/CLI)で書いたもの。スイートの組み上げやテスト実行部がありません。};}Javaや.NETには生成されたバイトコードやアセンブリからクラス名、メソッド名、引数などを抽出し、インスタンスの生成とメソッドの呼び出しが可能です。JUnit、NUnitは「リフレクション」と呼ばれるこの機能を使ってテストを抽出/実行できるのですが、ネイティブコードを生成するC/C++はリフレクションを持ち合わせていないので、テストスイートの組み立ておよびテストの実行をソースコード内に置いておかなければなりません。本稿で紹介するWinUnitはテストコードからDLLを生成することで(簡易版の)リフレクションを実現しています。DLLは他のEXEやDLLから呼び出せるよう、関数名がその内部に埋め込まれています。WinUnitのテスト実行アプリケーション「WinUnit.exe」は、実行時に指定されたDLL内からテスト関数を抽出し呼び出してくれるので、テストコード中のスイート組み上げやテスト実行部(すなわちmain)を必要としないのです。Windowsという限られた環境に限定されるものの、CUnit、CppUnitに比べ使い心地/お手軽さが大きく向上しています。印刷用を表示ブックマークツイート著者プロフィールεπιστημη(エピステーメー)C++に首まで浸かったプログラマ。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。