私は自分のアクセスレイヤーをゲームエンジンに書きました。私自身のコードを処理できるように、すべてのフレームと呼ばれるGameLoopがあります。私は特定のことをすることができ、これらのことが起こったかどうかを確認することができます。非常に基本的な方法で、それは次のようになります。非同期コードをテストする方法
void cycle()
{
//set a specific value
Engine::setText("Hello World");
//read the value
std::string text = Engine::getText();
}
は、私は私のEngine
-layerは、自動テストを書くことで作業しているかどうかをテストします。私はこのような簡単な比較テストのためにBoost Unittest Frameworkを使用した経験があります。
問題は、私がエンジンにしたいことは、cycle()
の呼び出しの後に処理されているということです。したがってをEngine::setText(...)
の直後に呼び出すと、空の文字列が返されます。 cycle()
の次の呼び出しまで待つと正しい値が返されます。
私は同じサイクルでそれらを処理することができない場合、どのように私がテストを書くべきかと思っています。ベストプラクティスはありますか?このような環境でBoost Unittest Frameworkが提供する "従来のテスト"アプローチを使用することは可能ですか?このような特殊なケースを目的とした他のフレームワークはおそらくありますか?
ここではすべてC++を使用していますが、プログラミング言語とは無関係な答えがあると思います。
UPDATE: は、あなたとの2つのオプションがありますcycle()
エンジンが処理を完了したことを伝えることができない限り、私は実際にこの動作を認識しません。しかし、他の人々の答えを見て非常に好奇心。 –