ゲーム エンジンに独自のアクセス レイヤーを記述しました。独自のコードを処理できるフレームごとに呼び出される GameLoop があります。私は特定のことを行い、これらのことが起こったかどうかを確認することができます. 非常に基本的な方法では、次のようになります。
void cycle()
{
//set a specific value
Engine::setText("Hello World");
//read the value
std::string text = Engine::getText();
}
Engine
自動化されたテストを作成して、レイヤが機能しているかどうかをテストしたいと考えています。このような単純な比較テストに Boost Unittest Framework を使用した経験があります。
問題は、エンジンに実行させたいいくつかの処理が への呼び出しの後に処理されることcycle()
です。Engine::getText()
そのため、直後に呼び出すとEngine::setText(...)
空の文字列が返されます。cycle()
正しい値の次の呼び出しが返されるまで待つとします。
テストを同じサイクルで処理できない場合、どのようにテストを記述すればよいか考えています。ベストプラクティスはありますか? そのような環境で Boost Unittest Framework によって提供される「従来のテスト」アプローチを使用することは可能ですか? そのような特殊なケースを対象とした他のフレームワークはおそらくありますか?
ここではすべて C++ を使用していますが、プログラミング言語とは関係のない答えがあることは想像できました。
更新:Engine
外部にアクセスすることはできませんcycle()