如何单元测试System.Windows.Application.Run()?

时间:2014-12-13 16:05:39

标签: c# wpf unit-testing

我正在尝试为以下方法编写单元测试:

public override void Run()
{
    base.Run();
    this.wpfApplication.Run();
}

请注意,“this.wpfApplication”是System.Windows.Application的一个实例。

我正在使用Microsoft的测试资源管理器来运行我的测试(在VS Express 2013中)。

如果我运行单元测试,它将挂在.Run()行上。

如何创建单元测试来运行此方法?

我已经有一个单元测试来测试基类的Run方法的实现。基类是支持控制台和WPF应用程序的框架的一部分。

1 个答案:

答案 0 :(得分:0)

与我调用.NET类方法的几乎所有其他情况一样,我最终编写了一个接口(例如IWpfRun)并在我的单元测试中使用了模拟实现。它确实意味着我需要在构造函数中做更多的事情(因为我需要指定要使用的实现)。

现在我的单元测试涉及我的方法,而不是混淆.NET类方法的问题,例如运行WPF应用程序,记录到文件等。

我的IWpfRun界面有2个实现。一个是我的WpfRun类,它覆盖了我的接口System.Windows.Application.Run方法的Run方法。第二个实现是我的WpfRunMock类,它通过更新属性来覆盖相同的方法。我可以断言在调用Run方法后属性值已更新。