於是我沿着這我應該如何測試訪問私有成員的公共方法
private List<ConcurrentQueue<int>> listOfQueues = new List<ConcurrentQueue<int>>()
public void InsertInt(int id, int value)
{
listOfQueues[id].Enqueue(value);
}
線的東西這是不是我不應該是單元測試?
如果是我如何測試InsertInt方法而不使用任何其他方法? 是否可以使用該方法從隊列中檢索數據以測試它是否正確輸入? 這是我應該使用模擬的東西嗎?
所以它更好在一個單元測試中測試多個東西,而不是將單元測試與實現聯繫起來? – scott 2011-06-03 13:05:41
是的,我相信是這樣,因爲它模仿了真實世界中如何使用這個類。如果你獨立地測試這兩種方法,你就沒有一個單元測試來確保輸入和輸出方法實際上在一起工作,這只是一個假設。然後,您可以更改其中一個的實現(和測試),而您的單元測試將通過,但代碼將在生產中失敗。你仍然需要進行單元測試,如果你用x參數調用輸入方法,你的輸出會給你y個參數,因此私人測試是浪費時間和精力。 – KallDrexx 2011-06-03 13:12:19
此外,它仍然是單元測試,因爲你的單元測試只處理一個類本身而不是在類之外,所以處理多種方法並不是一件壞事。 – KallDrexx 2011-06-03 13:13:14