经过几个小时的奋斗,我终于设法在我想要的项目中实施测试。
以下是我使用Prism复合应用程序的Pex和Moles(我也使用CodeContracts,我也建议使用CodeContracts,但这里没有发生)的一些细节。
- Pex和Moles主要有两件事:.Net框架类和接口,以及Prism类和接口。由于它们的低水平(系统)和依赖注入(Prism),它们不易于检测。
- 我做的第一件事是第一次在我的项目上运行Pex以显示错误。在那里,我找到了一个成功的测试,我要求Pex生成。它使用Pex引用自动创建测试项目。
- 在那里,我确定了哪些类和接口必须被存根:它主要涉及像IEventAggregator和IRegionManager这样的Prism接口。这些接口具有实现,可以由Moles存根。所有需要的是右键单击Prism参考(在项目参考中)并单击“为 Prism 添加摩尔”。自动生成包含所有Prism类的存根的程序集,Pex在下次探索时自动使用。使用此工具小心。我的第一反应是“骚扰”一切(棱镜,系统,依赖......)。这是测试项目的死亡。我没有找到如何压制鼹鼠组件。所以当它完成后,就完成了!
- 我建议逐个“鼹鼠”依赖,并在做之前思考。有时Pex不能创建对象,因为底层参数不稳定,导致对象创建失败(Pex报告没有显示缺少实现和低级错误之间的区别。它总是说:“< em> MyClass 对象无法创建“并建议创建工厂”
- 我为那些无法被Moles抄袭的课程创建了工厂。特别是,它不适用于使用事件聚合器的事件(继承自CompositionPresentationEvent)。
- 要有耐心并且得到解决。我发现Pex仍然是实验性的,并且“没有回头路”。解决反叛错误消息的最佳方法是删除测试项目并重新开始pex探索。
如果有人可以帮助我回答并提供更多细节和更正,那将非常受欢迎!