首页 > 解决方案 > 对给出 MissingMethodException 的私有方法进行单元测试

问题描述

我需要private在我的单元测试中使用PrivateObject.

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”类型的异常,但未在用户代码中处理

有人可以帮忙吗?

标签: c#unit-testing

解决方案


单元测试应该测试 C# 类的公共接口。其他类无法访问私有方法,因此测试类也无法访问是有意义的。

UrgentBackupButton_Click似乎是一个事件处理程序,所以如果你想测试它,你必须找到一种手动触发事件而不是调用它的方法,但这取决于你正在使用的平台(WPF、UWP、Xamarin 等)


推荐阅读