是否有可能编写Prism应用程序,以便可以在没有用户界面的情况下进行测试?

Gis*_*shu 8 .net wpf prism-4

免责声明:Prism新手.我正疯狂地阅读,以弥补失去的时间虽然:)

上下文:我需要为使用Prism构建的WPF应用程序编写自动验收测试.

问题:我发现在没有UI的情况下尝试编写支持ViewModels以及他们需要的所有内容是令人费解的.

我可能在这里错了... Prism允许你用命名占位符(区域)标记shell.不同的模块(独立单元)使用相应的RegionNames注册其视图.视图还依赖于通过MEF/Unity注入的ViewModel(ctor注入).

  1. 显示视图
  2. 触发创建子视图(regionName => View registry)
  3. 触发创建子视图模型(Mef ctor注入).

因此,编写应用程序将委托给Prism(或更重要的是View).这似乎是一种视图优先的方法.这样可以在没有用户界面的情况下启动应用程序.使用UI进行测试是一件痛苦的事.

我正在寻找的是一个演示者第一种方法,它在没有UI的情况下组成整个对象(ViewModel和依赖关系)图.

var viewModel = Someone.ComposeAndGet<ShellViewModel>();
Run Code Online (Sandbox Code Playgroud)

是否可以通过不同的方式编写应用程序或不支持Prism4?

[更新:2011年12月]
http://compositewpf.codeplex.com/discussions/283065
发布在棱镜论坛上以获得更多亮点; 似乎不可能.建议使用UI测试进行验收测试.Prism组成UI; 因此对观点有着至关重要的依赖性.

Rac*_*hel 3

我喜欢 Prism 框架,但是我很少使用 Prism 的区域,因为我觉得它迫使我采用视图优先的方法。

我不喜欢使用 View-First,因为我觉得它消除了使用 MVVM 设计模式的一些优点,例如保持层独立和单元测试。如果您的视图负责创建 ViewModel,那么要测试您的 ViewModel,您要么需要创建视图来创建 ViewModel,要么需要手动创建 ViewModel。

我还认为,理想的 MVVM 应用程序应该允许您使用任何 UI(甚至命令行)运行应用程序,并且通过使用区域,我将 ViewModel 限制为 Prism 界面。

有时我仍然会使用 Prism 的区域,但通常仅用于启动页面(例如 TitleBarRegion、MenuRegion、ContentRegion)