[问题] 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