.net - 是否可以编写 Prism 应用程序以便在没有 UI 的情况下对其进行测试?

标签 .net wpf prism-4

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

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

问题:我发现尝试在没有 UI 的情况下组合支持 ViewModel 和他们需要的一切是很复杂的。

我在这里可能错了... Prism 允许您使用命名占位符(区域)标记外壳。不同的模块(隔离单元)使用相应的 RegionNames 注册它们的 View 。 View 还依赖于通过 MEF/Unity 注入(inject)的 ViewModel(ctor 注入(inject))。

  • 显示 View
  • 触发创建 subview (regionName => View 注册表)
  • 触发 subview 模型的创建(Mef 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/

    相关文章:

    .net - 网格排序时 DataGridView.CellFormatting 不起作用

    .net - 使用 CredentialCache.DefaultNetworkCredentials 代表当前用户发送电子邮件

    c# - ASP.Net TableHeaderRow Controller 产生 tr 而不是 th

    mvvm - 无法从主视图绑定(bind) UserControl

    c# - 在 LINQ to SQL 中搜索两列?

    WPF:我需要实现什么才能使扩展的 IList(of T) 可绑定(bind)?

    c# - 设计时错误 - 'VisualState' 出现在至少两个命名空间中

    c# - App Current Shutdown关闭窗口提示

    c# - 在 ContextMenu 中访问 ViewModel/DataContext

    c# - 为什么在存在 MEF 时使用 ServiceLocator?