[問題] State Pattern隔離測試用Code
開發平台(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徹底分開。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.8.225
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1457432266.A.21D.html
推
03/08 18:51, , 1F
03/08 18:51, 1F
→
03/08 18:51, , 2F
03/08 18:51, 2F
不太了解你的意思...Orz
State的Interface用typeid取出來還是Interface不是Imp Orz
所以在外面看不到Interface的Imp到底是誰,只能靠Imp自己回傳了。
再者外面又包了一層State Machine,要把Interface挖出來又更髒了Orz
現在大概是
class IState{};
class StateMachine
{
private:
shared_ptr<IState> m_pState;
}
現在髒的地方是StateMachine跟State裡面都要放GetStateName,然後用typeid抓出來
往上丟。
※ 編輯: lovesnake (220.133.8.225), 03/08/2016 19:02:04
推
03/08 19:24, , 3F
03/08 19:24, 3F
→
03/08 19:24, , 4F
03/08 19:24, 4F
→
03/08 19:24, , 5F
03/08 19:24, 5F
了解了!! 感謝~
現在剩下怎麼把StateMachine裡面的IState指標拉出來了……
不能public不能提供interface... 還有什麼辦法可以測呢QQ.....
※ 編輯: lovesnake (223.137.189.248), 03/09/2016 10:11:11
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章