我正在開發一個解釋器,並且想要對解釋模型的「execute」方法進行內部測試。 execute方法沒有輸入或輸出,所以測試方法的唯一方法(至少從我所知道的方面來看)是模擬內部方法調用以查看它們以正確的順序執行。設計和測試這個類的正確方法
目前,我有以下類:
ExecutableInstance
- 可以執行模型類。ExecutableInstanceFactory
- 單例類(實現爲一個枚舉),創建可執行實例,不同的方法取決於它給出的參數。ModelAnalyzer
- 包含方法來分析模型
的解釋單身類調用ExecutableInstance
類,然後調用ModelAnalyzer
瞭解模型內部執行情況的方法。然後使用ExecutableInstanceFactory
創建新的ExecutableInstance
,然後根據模型的定義調用方法。
我的想法是模擬ExecutableInstanceFactory
類,以便它返回模擬ExecutableInstace
s,然後我可以測試執行順序。但這意味着我必須將ExecutableInstanceFactory
注入ExecutableInstance
。由於它是單身人士,因此將其作爲參數傳遞是愚蠢和愚蠢的。我想過使用谷歌的Guice作爲DI ......但我一直在試圖做到這一點。
我的方向是否正確?如果是這樣,這應該如何實施?
想到了這一點,但這會破壞'ExecutableInstance'類的封裝。這被認爲今天好嗎? – vainolo
只要方法有意義,我不認爲封裝會中斷,因爲每種方法都可以用於其他情況 - 例如,如果您只想解析代碼而不執行它。 –