使用SpecFlow,White,Spring和MS Test测试WinForms/CompositeUI GUI

Sla*_*klo 6 .net testing user-interface spring.net winforms

我有一个C#桌面应用程序(CompositUI/WinForms).此应用程序使用SmartClient连接到Web服务.我的任务是使用SpecFlow和White框架为此应用程序引入(改进)测试.为了测试GUI,我需要模拟webservice调用.连接到它的类正在通过Spring.net注入.我的任务是测试能够在测试期间模拟webservice调用的应用程序,这意味着,我的测试代码需要控制我的模拟将执行的操作.问题:启动GUI的方法根本就是不将控制权返回给调用它的线程.结果,我们无法控制GUI和模拟.

所以我现在的问题是:

  • 它是可行的(如果是这样 - 如何做)在单独的线程中启动GUI并控制回测试线程?

  • 什么是运行GUI测试的其他可能性,这将允许我控制注入?

小智 -1

测试 .net UI 至关重要,您必须使用 MVVM 工具集或创建一个工具集,以便您可以配置解决方案来测试 UI 使用的方法。在Wikipedia上可以找到许多支持此功能的 .net 框架。

所有 MVVM UI 测试的基础都是 DI/IOC 框架,您也需要选择它。

本质上,您创建了一个可以测试的 ViewModel 类。有关 WPF 单元测试的示例 - http://www.markermetro.com/2010/07/technical/mvvm-light-and-unit-testing-example/

现在有一些问题需要考虑。首先,M$ 不会对 .NET WinForms 进行重大更改(非常感谢!),并且 XAML/WPF 没有升级路径。MS$ 表示开发人员应该开始使用 WPF UI 设计器来进行桌面项目。支持 WinForms 的 MVVM 框架数量有限,因此您可能必须通过 DI 推出自己的框架,但请查看以下有关该主题的StackOverflow讨论。

其次是.NET Forms、WPF、Windows Phone、Web UI、Metro UI 实现问题。根据Mark Seemann 及其《.NET 中的依赖注入》一书,Microsoft 的 P&P 团队为 xaml/WPF 创建的 Prism 有一些依赖注入反模式(服务定位器是 BAD ) 。Prism 尚未升级到 Metro 并重新架构,这让采用者感到困惑并使其部分多余。从本质上讲,我的观点是,获得一个框架来让您的应用程序 UI 向前发展将会很困难。