【发布时间】:2019-10-07 22:36:10
【问题描述】:
我需要在我的单元测试中使用PrivateObject 调用private 方法。
private void UrgentBackupButton_Click(object parameter)
{
// Do Something...
}
这是我的单元测试:
[TestMethod]
public void TestMethod1()
{
//MainWindowViewModel main = new MainWindowViewModel();
PrivateObject privateObj = new
PrivateObject(typeof(MainWindowViewModel));
privateObj.Invoke("UrgentBackupButton_Click",null);
}
privateObj.Invoke("UrgentBackupButton_Click",null) 给了我例外:
在 mscorlib.dll 中发生了“System.MissingMethodException”类型的异常,但未在用户代码中处理
有人可以帮忙吗?
【问题讨论】:
-
UrgentBackupButton_Click似乎是一个事件处理程序(参数不正确,可能是由于复制/粘贴),单元测试不适用于 UI。要测试 UI,您必须使用一些自动化测试,这些测试将模拟用户(键入文本、移动鼠标、单击等)。考虑重构您的代码,使其具有带有公共方法的可单元测试模型,所有东西都在其中。 -
@Sinatr 是的,我找到了解决方案。这是不正确的参数。我没有直接将 null 作为参数传递,而是这样做了 - > Object paramaeter = null;和 privateObj.Invoke("UrgentBackupButton_Click",paramaeter)。这行得通!我知道这是小事。
标签: c# unit-testing