【发布时间】:2013-08-07 10:38:40
【问题描述】:
我正在为 Visual Studio 2012 中的现有类“Person”编写单元测试,该类具有带有 2 个参数和一些业务逻辑的构造函数。
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个参数的构造函数,上面的语句怎么写?
【问题讨论】:
-
new PrivateObject(typeof(Person));不调用类Person的无参数构造函数。您正在通过采用Type的构造函数创建PrivateObject的实例。它不需要Person的实例。 -
MissingMethodException 意味着非常不同的东西。您没有运行与编译时相同的代码。 DLL 地狱问题。您可能通过添加此构造函数并重建 DLL 来修复它。修复是重建它,而不是添加构造函数。所以你最好再次删除它。
-
@HansPassant 谢谢
-
@TimSchmelter 谢谢
标签: visual-studio-2010 oop c#-4.0