2011-05-06 26 views
1

假設我有一個擁有私有方法的類。我想通過每個特定迭代的一些種子參數來測試這種方法。你會如何重構一個循環來爲每個interation進行單元測試?

例如,我想讓StartTrhoughGridCells方法的迭代次數低於可測試值,以便我可以檢查parameterObject中的statte更改。

在這種情況下,我怎樣才能使每個迭代在一個內部循環的私有方法中可測試?

public class Traveller 
{ 

// ... Some memebers, properties 

private void StartTrhoughGridCells(object parameterObject) 
{ 
    // Do some state changes on parameterObject 
} 

} 
+0

你可以讓它不是無效的,只是輸出狀態變化int int [n,numberofproperties]其中n是迭代數,每列保存返回的狀態? – soandos 2011-05-06 11:05:45

回答

3

單元測試是黑箱測試,所以在概念上,具體測試的私有方法不應該是目的本身。單元測試不關心私有方法,他們不知道它們的存在。現在,當涉及到代碼覆蓋範圍時,您想要打所有代碼,但這不完全相同......

編寫單元測試時,您只關心可觀察效果。推測StartTrhoughGridCells方法存在產生某種可觀察的效果,所以你需要測試。但是,從這個問題我不能說出那個可觀察到的效果是什麼,所以你必須爲自己弄清楚。

換句話說,您需要通過任何公共API訪問該方法。如果這樣做太難了,這表明你的API太粗糙了。在這種情況下,請考慮一些私有方法是否不能重構爲可組合策略或類似方法。

相關問題