さらにここで、スタティック・ライブラリ・プロジェクトの「abs_math」に依存関係を設定します。プロジェクトの依存関係の設定方法は、次の画面を参考にしてください(※ファイルの追加方法については先ほどとほぼ同じなので説明は割愛します)。
さらにテスト・コードがabs_math.hファイルをインクルードできるよう、次の画面の手順でインクルード・パスを設定しましょう。
ここでテスト・プロジェクト「abs_math_test」をビルドすると、「ファイル '..\debug\abs_math.lib' を開くことができません。」というエラーとなります。当然ですね、まだ求められる関数abs_compareの実装がないのですから。ライブラリ・プロジェクト「abs_math」にソース・ファイル(C++ファイル)「abs_compare.cpp」を追加します。ビルドを成功させるため、関数abs_compareの実装は取りあえず“常に0を返す”ことにします。次の画面はこれを実装したところです。
これでソリューション全体をビルドしてみてください。無事にすべてのビルドが成功し、ライブラリ「abs_math.lib」とテスト「abs_math_test.exe」が生成されます。「abs_math_test」プロジェクトをスタートアップ・プロジェクトに設定して(=[ソリューション エクスプローラ]でプロジェクト項目を右クリックして[スタートアップ プロジェクトに設定]を選択)、IDEのメニュー・バーから[デバッグ]−[デバッグなしで開始](または[Ctrl]+[F5]キー)を実行してください。次のような結果が得られるはずです。
これでテストと実装の準備は整いました。期待する結果が得られるよう、ここからabs_compare関数を実装してみてください。仕様どおりに正しく実装されれば、次の実行結果が得られます。
abs_compare関数が仕様を満たしているか否かを検証できるだけの十分なテスト・ケースをテスト関数abs_compare_testが網羅しており、実行結果が全テスト・ケースに対して成功することを示しているならば、あなたの書いたabs_compare関数は完ぺきであることが保証されたことになります。
この例から「関数のテスト」の手順が分かりますが、この手順はC++の「クラスのテスト」であってもまったく同様です。すなわち、
ここで重要なのは、テスト・ケースは実装作業とともに次第に増えていき、それらは毎回すべてテストされるということです。それによっていままで正しく動いていた関数/メソッドの実装が進むうちにいつの間にか動かなくなる“デグレード”を速やかに検出できるのです。
Copyright© Digital Advantage Corp. All Rights Reserved.