2013-08-07 199 views
-1

我正在爲Visual Studio 2012中的現有類「Person」編寫單元測試,並且該類有具有2個參數和一些業務邏輯的構造函數。c#中的無參數構造函數#

TestMethod()   
public void VerifyPersonTest() 
{ 
    //Using PrivateObject class 
    PrivateObject privateHelperObject = new PrivateObject(typeof(Person)); 

    //Some business logic        

} 

當我嘗試上面的測試運行有一個例外「system.missingMethodException而{」此對象定義無參數的構造函數。「}」。所以我加入參數的構造函數Person類和能運行測試沒有任何問題。

我有以下問題

1)正如我已經添加參數的構造函數Person類,這將打破Person類的任何現有的功能?

2)PrivateObject privateHelperObject = new PrivateObject(typeof(Person));

上述語句調用person類的無參數構造函數。假設我想用2個參數調用構造函數,我該如何編寫上面的語句?

+1

'新PrivateObject(typeof運算(人));'不會調用類的參數的構造函數'Person'。您正在通過構造函數創建一個'PrivateObject'的實例,該構造函數採用'Type'。它不需要'Person'的實例。 –

+0

MissingMethodException意味着非常不同的東西。您沒有運行您編譯的相同代碼。 DLL地獄問題。您可能通過添加此構造函數並重新構建DLL來修復它。修復是重建它,而不是添加構造函數。所以你最好再刪除一次。 –

+0

@HansPassant謝謝 – user2580179

回答

0

你也可以自己實例化對象Person

var myPerson = ...; 
var privateHelperObject = new PrivateObject(myPerson);