ほんの数日前、check と呼ばれる単体テスト フレームワークの調査を開始し、Linux で C コードでテストを実行するつもりです。
ここで、適切に設計されたコードといくつかのテスト コードを確認して、基本的な機能が正しいことを確認するのに役立ちます。つまり、変数を見て応答を返し、関数が正しいかどうかを判断するのは非常に簡単です。
しかし、malloc と free を大幅にオフにして動的メモリ構造をテストしたいとしましょう。データを入れて、正しいデータを再び取得できることがわかりました。しかし、それは私がその過程でいくつかのメモリを壊していないことを証明するものではありません.メモリの半分を解放するのを忘れてポインタを失ったとしましょう(古典的なメモリリーク). そのコードは、おそらくほとんどの単体テストに合格するでしょう。
それでは質問です。ユニット テスト コード全体を Valgrind で実行し、malloc/free の問題を検出させるのは良い考えですか? (または、Electric Fence のようなものでコンパイルしますか?)
いいアイデアのように感じますが、ここで何を考えているのかわかりません.....
ありがとうヨハン
更新: Douglas と Jonathan に感謝します。
更新: Valgrind は楽しいツールですが、これを行うと最初に見つかった memleaks は、自分のコードではなくテスト フレームワークにありました (かなり面白いですが)。したがって、残りのヒントは、独自のコードをひっくり返す前に、使用している単体テスト フレームワークがリークしていないことを確認することです。私の場合は空のテスト ケースで十分でした。それは、単体テスト フレームワークしか実行されていないためです。