Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。CUnitの使い方(2/2)テスト・プロジェクトまずコンソール・アプリケーションのひな型を作り、テスト対象となるソース/ヘッダを追加します。次にプロジェクト・プロパティでCUnitヘッダのディレクトリとライブラリを設定します。CUnitヘッダ・ディレクトリCUnitライブラリ・ディレクトリCUnitライブラリこれで完了。テストの書き方CUnitでは複数のテストをまとめたものをsuiteと呼んでいます。CUnitは複数のsuiteを一気に実行してくれます。CarとBusそれぞれのテストをそれぞれsuiteとし、ふたつのsuiteを登録して実行というような手順となります。テストをいくつか書きましょう。テスト対象を生成/廃棄する初期化/後始末関数を用意します。これらはそれぞれsuiteの開始直前/終了直後に呼び出されます。いずれも引数はなし、戻り値はintで正常に初期化/後始末できたら0を返してください。0;}つぎにテスト関数。テスト関数は引数/戻り値共にvoidです。assertマクロではassertできるのは「正しく動作していればtrueとなる式」だけでしたが、CUnitは検証のためのさまざまなマクロCU_****を用意してくれています。50);}テストが書けたら、それらをまとめてsuiteを作ります。各テストに簡単なタイトルを付けることができます。*/};さらにsuiteをまとめます。このときsuiteにタイトルを付け、始めに用意した初期化/後始末関数と共に登録します。*/};最後にmain。CUnitはいくつかのテスト形式をサポートしていますが、ここでは基本的なBasicを使いましょう。0;}ここまでのコード片をまとめて例えば「test.c」とし、プロジェクトに追加します。0;}てコンパイル/実行します。全テストにパスすれば、次のような出力が得られます。0給油関数car_refuelにわざと誤りを混入させ、タンク容量制限を外してみました。1「test.c」の27行目で失敗したことを教えてくれていますね。まとめCUnitを使った開発の手順はおおむね次のようになります。関数のインターフェイスを定め、ヘッダに追加する。関数の仕様と定義されたインターフェイスを基にテストを書く。定義されたインターフェイスに従った実装を書く。このとき関数内はほとんど空でいい。コンパイル/リンクし、テスト(実行)する。空の関数を呼び出すため、おそらくテストは失敗する。それによってテストされていること/関数が呼び出されていることを確認する。テストにパスするよう、関数を実装する。この手順を繰り返し、考えうるすべてのテストにパスすれば終了です。やって作られたテストは大切に保存しておきましょう。このテストコードは提供された機能のすべてを実際に呼び出す、優れたサンプル(利用マニュアル)でもあるのです。後日機能の変更や拡張が必要となったとき、まずテストして元コードが正しく動作することを確認します。拡張/変更に基づきテストに追加/変更を加え、全テストをパスするようコードに手を加えます。常にテストされた状態を維持しながらコードの修正を行うことが重要なのです。することであなたが書いたコードの信頼性/堅牢性を確保できるのですから。επιστημη(エピステーメー)C++に首まで浸かったプログラマ。モブプログラミングを取り入れて開発を効率化させるヒント9Pythonや生成AI活用など無料で基礎が学べるプログラミング学習講座「スタディングテック」提供開始10企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9Pythonや生成AI活用など無料で基礎が学べるプログラミング学習講座「スタディングテック」提供開始10企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9Pythonや生成AI活用など無料で基礎が学べるプログラミング学習講座「スタディングテック」提供開始10企業の7割超が「2025年の崖」を理解していないことが明らかに。新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。