我已經寫了我自己的訪問層到遊戲引擎。有一個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::setText(...)
之後直接調用Engine::getText()
會返回一個空字符串。如果我要等到cycle()
的下一個呼叫,則會返回正確的值。
我現在想知道如果我不能在同一個循環中處理它們,我應該如何編寫測試。有沒有最佳做法?在這樣的環境中是否可以使用Boost Unittest Framework提供的「傳統測試」方法?有沒有其他框架針對這樣一個專門的案例?
我在這裏使用C++的一切,但我可以想象有與編程語言無關的答案。
UPDATE: 這是不可能訪問Engine
外cycle()
除非引擎能夠以完成處理的方式發出信號,否則我並不認爲這有效。不過,非常好奇看到別人的答案。 –