我有一個難於測試包含對象列表的類的單元。如何在單元測試中設置私有變量
這裏是我有什麼
public class A
{
List<B> _list;
public A()
{
_list = new List<B>();
}
public void AddNewB(DateTime time)
{
_list.Add(new B(time));
}
public List<B> GetAllBs()
{
return _list;
}
}
我想有一個測試,證明添加新B不清除我的列表。但是由於這個列表是私人的,我無法設置一個現有列表,通過我想測試的代碼。由於A類負責創建所有新B並將其添加到列表中,並且所有新A都應該有一個B的空列表,所以爲了測試而在構造函數中添加一個參數感覺很奇怪。
編輯:我修復了GetAllBs,因爲它是AddNewBs的複製粘貼錯誤。
請記住,你正在測試的單元是類,而不是方法。只要該類的公共接口表現自己,你就不應該在乎它在內部做什麼。就你的測試而言,'_list'可能不存在。 –
您可能想閱讀這個http://stackoverflow.com/a/1093481/2096538。你不應該關心類的內部實現,你應該檢查外部可見的效果是否符合你的期望,否則你的測試被綁定到類的內部實現上。 –
我感覺很奇怪,要調用我想測試的方法來設置我的測試。 –