如何测试WPF表单?

时间:2012-02-15 11:06:50

标签: c# wpf unit-testing nunit window

我正在编写复杂的应用程序,其中包括服务器和客户端应用程序,如果我想在我的应用程序中添加一些新窗口,我需要运行服务器,然后运行客户端,然后登录点击几个按钮,然后我到达窗口,我现在开发,这很烦人,需要很多时间。所以现在我正在寻找一些解决方案,我可以运行测试,只能运行我的wpf表单使用模拟服务(所以我不需要运行服务器,不需要登录),可以点击或触发事件和检查控件出现并以我想要的方式行事。 在这种情况下,我可以节省大量的时间,因为我不需要浪费时间,当我尝试通过运行整个应用程序到达我的表格,我需要使用登录,搜索绕过一些验证表格等。 如果已经有了简单的解决方案,那就太棒了。

2 个答案:

答案 0 :(得分:4)

看一下MVVM模式。

MVVM for WPF

答案 1 :(得分:0)

您使用的是dependency injection吗?如果是这样,您可以使用mocking framework#if-else directives组合创建虚假版本的重型服务。应用程序启动代码中的某处:

ILoginService service;

#if DEBUG
    service = A.Fake<ILoginService>();
    // you could even set up your fakes to return logged user to
    // automate logging in process:
    var userFake = A.Fake<IUser>();
    A.CallTo(() => service.LogIn(A<string>.Ignored)).Returns(userFake);
#else
    service = new RealLoginService();
#endif

var myWindow = new MyWindow();
var viewModel = new ViewModel(service);
myWindow.DataContext = viewModel;

// ...

你需要的只是ViewModel(假设你使用了这个)能够采用ILoginService依赖。然后你可以根据自己的喜好模拟/伪造它。