有時我覺得嘲笑受試者本身的願望,我知道它看起來很奇怪。嘲笑SUT本身
這裏是例子。我使用C#,但沒關係。想象一下你有一個班級管理一些收藏。它有方法
public void Insert(int position, T element)
和
public void Delete(int position)
這些方法的邏輯是不是很簡單。除了修改集合外,他們還可以舉例說明事件,訂閱/取消訂閱事件,獲取/釋放資源或執行計算。這些方法用單元測試來檢查這個功能。
現在你添加一個方法
public void Replace(int position, T element)
{
Delete(position);
Insert(position, element);
}
我不能完全肯定,但對我來說,這是不值得再次測試所有這些事情,這種方法。相反,檢查這個方法是否真正調用了兩個是有意義的。
如果前兩個方法屬於另一個類或接口,那麼使用現代模擬框架將很容易。但是這些方法屬於SUT。
是否有可能做我想要的東西?如果不是,那爲什麼?這是嘲諷方法的一個無意的缺陷還是設計。如果第一,是否有解決方法?如果第二,我應該如何設計和測試描述的程序?
太好了,謝謝!我不使用FakeItEasy,但會在我目前使用的框架中尋找類似的功能,並記住使用FakeItEasy作爲備用選項。是的,這只是一個例子。在實踐中,我經常遇到有些方法,通常是私有的,在同一個類中被其他方法廣泛使用。 – 2011-04-20 11:57:18
@PatrikHägne:謝謝,但是我怎樣才能測試那個叫做 靜態擴展方法的類呢? – Mohsen 2017-07-10 07:07:43