2013-08-07 201 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);