まず、ユニットテストフレームワークが必要です。過去にUnitTest ++とGoogle Testを使用しました。前者は非常に軽量で、後者はより多くの機能を備えていますが、やや面倒です。そのようなことが必要になった場合、Google Mockとうまく統合できます。もちろん、他にも多くのオプションがあります:このリスト(最終的にはUnitTest ++の著者による)やウィキペディアを参照してください。
ユニットテストは、さまざまなシナリオで特定の独立した独立したコード(「ユニット」)にストレスを与えるための集中テストを記述することです。場合によってはすべてを単体テストできますが、通常、100%のカバレッジを達成することは実際的ではなく、特にゲームでは非常に難しい場合があります-レンダラー出力の単体テストが何らかの意味で有用であるかどうかは議論の余地があります関係なく、「真の」単体テスト。
(自動化された)テストは、自動化されていないテストよりも優れていることを覚えておくことが重要です。したがって、テストが「真の単体テスト」ではないという事実を強調しすぎず、単にテストがあることを誇りに思うべきではありません。ユニットテストフレームワークは、テストをパッケージ化し、障害を均一に報告する機能を含むため、通常、より緩やかな「非ユニット」テストの構築にも役立ちます。
古いテストを復活させ、利用可能なフレームワークの1つを使用してテストプロジェクトにビルドすることをお勧めします。すべてを実行する、時々(またはリリースまたは統合ビルドの一部として自動的に)簡単に実行できるものあなたのテスト。役に立つことが明らかになったときに、コードのビットの新しいテストを作成します。たとえば、テストで検出できた微妙なバグを発見した場合、将来追加する可能性のあるリグレッションをキャッチするために追加できます。
ゲームでの単体テストに適しているのは、ほとんどが低レベルのユーティリティコードであることがわかるでしょう。それは大丈夫です-それが壊れた場合、それは多くの上位層を妨げる可能性のある基礎コードです。
コードベースのすべての小さな関数と論理ゲートのテストがないためにプログラマの煉獄に行かないので、テストの作成に必要以上の時間を費やさないでください。そもそもモジュールを作成するのにかかったよりも、モジュールのテストを書くのに一生懸命に考えたり、かなりの時間を費やしたりする必要がある場合は、時間を浪費している可能性があります。単体テスト(一般的にテスト)は、適切に使用して学習するためのツールであり、すべてに対して実行する必要がある面倒な作業ではありません。