3
有什麼辦法有測試調用構造函數的代碼時,而不是構建的真實情況的模擬?構建嘲笑
例如:
public class ClassToTest
{
public void MethodToTest()
{
MyObject foo = new MyObject();
Console.WriteLine(foo.ToString());
}
}
在本例中,我需要創建一個單元測試,證實了對ClassToTest的實例調用MethodToTest確實會輸出任何新的的ToString()方法的結果創建MyObject的實例。
我看不到的孤立現實測試「ClassToTest」類的方式;測試這個方法實際上會測試'myObject.ToString()'方法以及MethodToTest方法。
有一個類似的問題,使用上控制檯靜態方法WriteLine。這將很難測試。就我個人而言,我將BCL類(如Console)包裝到一個類中,該類中包含一個實例方法WriteLine,它代表您調用真正的控制檯。然後在測試中,你注入一個模擬包裝並聲明反對。 – 2010-06-14 12:30:24
我認爲,在某些情況下,無論測試如何,這肯定是一個更好的選擇,但我主要關心的是,在某些情況下,允許客戶端代碼提供'ClassToTest'使用的對象可能不是一個好主意」。此外,在某些情況下,如果只有ClassToTest包含構建它所需的數據,則客戶端代碼可能無法提供合適的實例。 我曾希望有可能爲「超越」 .NET的類註冊,並提供自己的一類,即,在這種情況下,一個模擬。 – Flynn1179 2010-06-14 12:35:59