Kendi erişim katmanımı bir oyun motoruna yazdım. Kendi kodumu işleme koymamı sağlayan her kareyi alan bir GameLoop var. Belirli şeyler yapabiliyorum ve bu şeylerin olup olmadığını kontrol edebiliyorum. çok temel bir şekilde, bu gibi görünebilir:Eşzamansız kod nasıl test edilir
void cycle()
{
//set a specific value
Engine::setText("Hello World");
//read the value
std::string text = Engine::getText();
}
benim Engine
-layer otomatik testler yazılı çalışıp çalışmadığını test etmek istiyorum. Bu gibi basit karşılaştırma testleri için Boost Unixest Framework'ü kullanma konusunda bazı tecrübelerim var.
sorun şu ki, motor yapmak istiyorum bazı şeyler sadece cycle()
çağrısının ardından işlem görür. Engine::getText()
'u doğrudan Engine::setText(...)
'dan sonra arayarak boş bir dize dönecektir. Bir sonraki cycle()
numaralı çağrıya kadar beklerseniz, doğru değer döndürülür.
şimdi aynı döngüde bunları işlemek mümkün değilse benim testleri yazmak nasıl merak ediyorum. En iyi uygulamalar var mı? Böyle bir ortamda Boost Unittest Framework tarafından verilen "geleneksel test" yaklaşımını kullanmak mümkün mü? Böyle özel bir duruma yönelik belki de başka çerçeveler var mı?
Burada her şey için C++ kullanıyorum ama programlama dili ile ilgili olmayan cevaplar olduğunu düşünebiliriz.
GÜNCELLEME: Seninle iki seçenek vardır cycle()
Motor işlenmesi bitti bir şekilde size sinyal sürece, gerçekten bu çalışma görmüyorum. Yine de diğer insanların cevaplarını görmek çok meraklı. motor 'isResultReady() olmadığından –