【问题标题】:Use of Microsoft Pex with Prism composite application将 Microsoft Pex 与 Prism 复合应用程序一起使用
【发布时间】:2011-02-07 09:11:43
【问题描述】:

我正在我的 Prism 复合应用程序中实施单元测试,并尝试实施 Microsoft Pex (http://research.microsoft.com/en-us/projects/pex/) 以加快这项任务。 但是我遇到了很多与 Prism 相关的麻烦。尽管使用 Moles 来存根 Prism 实现,但我在执行此操作时遇到了很多错误和问题。

有人已经成功地将 Pex 与 Prism 应用程序一起使用了吗?

提前感谢您的回答

【问题讨论】:

  • 您可能正在开辟新天地……如果您能在此处报告您的具体结果(成功或失败)作为您问题的答案,那就太好了。
  • 没问题,我正在探索这个主题。当我找到解决方案时我会更新

标签: .net wpf prism pex


【解决方案1】:

经过数小时的努力,我终于设法在我想要的项目中实施测试。 以下是关于我使用 Prism 复合应用程序的 Pex 和 Moles 体验的一些详细信息(我也使用 CodeContracts,我建议使用它,但这在这里没有发生)。

  • Pex 和 Moles 主要有两点敏感:.Net 框架类和接口,以及 Prism 类和接口。由于它们的低级别(系统)和依赖注入(Prism),它们不容易检测。
  • 我做的第一件事是在我的项目上第一次运行 Pex 以使错误出现。在那里,我找到了一个我要求 Pex 生成的成功测试。它会自动使用 Pex 引用创建测试项目。
  • 在那里,我确定了哪些类和接口必须被存根:它主要涉及 Prism 接口,如 IEventAggregator 和 IRegionManager。这些接口有实现并且可以被 Moles 存根。只需右键单击 Prism 参考(在项目参考中),然后单击“为 Prism 添加痣”。自动生成包含所有 Prism 类的存根的程序集,由 Pex 在下一次探索时自动使用。 小心使用此工具。我的第一反应是“痣”一切(棱镜,系统,依赖......)。这是测试项目的死亡。我没有找到如何抑制痣集合体。所以当它完成时,它就完成了!
  • 我建议逐步“消除”依赖关系,并在做之前三思而后行。有时,Pex 无法创建对象,因为底层参数错误实例化,导致对象创建失败(Pex 报告没有显示缺乏实现和较低级别错误之间的区别。它总是说:“MyClass 对象无法创建”,建议创建工厂)
  • 我为 Moles 无法存根的类创建了工厂。特别是,它不适用于使用事件聚合器(继承自 CompositionPresentationEvent)的事件。
  • 耐心等待并解决。我发现 Pex 仍然是实验性的并且“没有回头路”。解决反叛错误消息的最佳方法是删除测试项目并重新开始 pex 探索。

如果有人可以帮助我回答并提供更多详细信息和更正,那将非常受欢迎!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多