[問題] State Pattern隔離測試用Code

作者: lovesnake (LoyalDog)   2016-03-08 18:17:43
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++12
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
Google Test
問題(Question):
如何在測試時要知道State Machine到哪個State,但又不把測試Code埋入Production Cod
e
理呢?
目前只能在每個State裡面埋一個 std::string GetStateName();
然後用Macro把它包起來 :
#ifdef _TEST
std::string GetStateName();
#endif
愈看愈覺得髒到不行...有什麼辦法可以解決這樣的情況嗎?
讓測試Code跟Production Code徹底分開。
作者: IKAFIRE (沒有)   2016-03-08 18:51:00
用dynamic_cast檢查你state的type?雖然我覺得應該有更好的方法dynamic_cast<StateA>(stateprt)可以判斷stateptr是否屬於某runtime type,但是你要逐個type檢查所以還是很髒,只是變成髒在你的測試code裡面而已

Links booklink

Contact Us: admin [ a t ] ucptt.com