免责声明: Prism 新手。我正在疯狂地阅读以弥补失去的时间:)
上下文:我需要为使用 Prism 构建的 WPF 应用程序编写自动化验收测试。
问题:我发现尝试在没有 UI 的情况下组合支持 ViewModel 和他们需要的一切是很复杂的。
我在这里可能错了... Prism 允许您使用命名占位符(区域)标记外壳。不同的模块(隔离单元)使用相应的 RegionNames 注册它们的 View 。 View 还依赖于通过 MEF/Unity 注入(inject)的 ViewModel(ctor 注入(inject))。
因此,编写应用程序被委托(delegate)给 Prism(或更重要的是 View)。这似乎是一种 View 优先的方法。这会在没有 UI 的情况下启动应用程序。使用 UI 进行测试很痛苦。
我正在寻找的是一种演示者优先方法,它在没有 UI 的情况下组成整个对象(ViewModel 和依赖项)图。
var viewModel = Someone.ComposeAndGet<ShellViewModel>();
Prism4 是否可以通过不同的方式编写应用程序或不支持?
[更新:2011 年 12 月]
http://compositewpf.codeplex.com/discussions/283065
发布在 prism 论坛上以获得更多信息;似乎这是不可能的。建议使用 UI 测试进行验收测试。 Prism 组成 UI;因此对观点有至关重要的依赖性。
最佳答案
我喜欢 Prism 框架,但我很少使用 Prism 的 Regions,因为我觉得它迫使我采用 View-First 方法。
我不喜欢使用 View-First,因为我觉得它消除了使用 MVVM 设计模式的一些优势,例如保持层分离和单元测试。如果您的 View 负责创建您的 View 模型,那么要测试您的 View 模型,您需要创建 View 来创建 View 模型,或者您需要手动创建 View 模型。
我还觉得一个理想的 MVVM 应用程序应该允许您使用任何 UI 甚至命令行运行应用程序,并且通过使用区域我将我的 ViewModels 限制为 Prism 界面。
有时我仍会使用 Prism 的区域,但通常只用于启动页面(例如 TitleBarRegion、MenuRegion、ContentRegion)
关于.net - 是否可以编写 Prism 应用程序以便在没有 UI 的情况下对其进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383495/