2012-08-17 294 views
1

我必須找到並解決一個包含循環依賴的問題,我要麼在所涉及的對象之間存儲不透明指針,要麼在較高級別上使用單獨的類來實現對象之間的關係。循環依賴測試

所以我想到了一個簡單的問題,我有兩個班級,銀行和帳戶應該做的。銀行包含一個包含賬戶的列表,該賬戶包含一個指向其銀行的指針。實現循環依賴。

但是還有另外一個條件,我必須確定哪些是我必須確保它們之間的類和關係可以獨立於彼此進行測試。

銀行類使用的功能在帳戶上做東西,例如在它們之間轉移資金,提取或增加資金。該帳戶包含編輯其變量的類似功能。

測試帳戶類很容易實例化類和測試函數,但我如何測試依賴於獨立於依賴另一個類的類? 你如何測試兩個類之間的關係?

我很難找到關於循環依賴關係的信息,除了您應該避免它們,但是在較大的項目中它們可能很難避免。

+0

這功課嗎? – 2012-08-17 15:01:03

+0

可能dupclicate http://stackoverflow.com/q/10463001/819272 – TemplateRex 2012-08-17 15:12:39

回答

0

重要的問題是爲什麼賬戶需要知道哪家銀行擁有它?很難想象一個帳戶上的操作需要這些信息不會更好地完成作爲涉及銀行的操作。例如,將資金從一個賬戶轉移到另一個賬戶通常涉及A銀行將賬戶AA中的資金轉移到B銀行,B銀行然後將賬戶添加到B賬戶。

也許你需要刪除依賴關係,然後找出沒有它的「不可能」,然後重新考慮你正在嘗試做什麼,或者用銀行的方式重新考慮它,而不是考慮做什麼銀行。

0

考慮寫一個精簡版的帳戶

例如,

class Account 
{ 
    public: 
     bool failDebit; 
     bool Debit(unsigned int quid) { return failDebit;} 
} 

然後,你可以通過設置failDebit首先爲這兩種情況下測試您Bank類。然後,如果在Bank中使用更多複雜函數並使用類似方法測試Bank類中的所有可能性,則可以使其更復雜。 Account類可以非常簡單,只是模仿返回值。

NB這有點簡單,因爲可能需要考慮各種函數調用之間的依賴關係(無雙關語)。