有没有适用于Windows Phone 7的模拟框架,还是我需要手动创建假对象?
我在谷歌上没有找到任何相关内容,虽然我在WP7资源页面上找到了Moq,但我无法让它正常工作。
有没有适用于Windows Phone 7的模拟框架,还是我需要手动创建假对象?
我在谷歌上没有找到任何相关内容,虽然我在WP7资源页面上找到了Moq,但我无法让它正常工作。
目前没有支持WP7的Mocking框架,我怀疑在WP7支持Reflection.Emit之前都不会有这样的框架。在.net框架上,有许多选项可用于创建Mocking框架(Profiler API、CodeDem、Refleciton.Emit等)。其中大部分技术在Silverlight本身上无法使用,因为它缺少许多BCL/CLR。所有现有的Silverlight Mocking框架都使用Reflection.Emit。WP7不支持Reflection.Emit,因此没有任何Silverlight Mocking框架可以在WP7上工作。
因此,我个人在Silverlight运行时上测试WP7程序集。这远非最佳方案(很糟糕),但在这种情况下是最好的解决方案。
理论上,可以构建一个使用Post-Build MSIL weaving的Mocking框架,应该可以在WP7上工作,但尚未完成。
如果您希望WP7支持Reflection.Emit,请考虑投票支持此uservoice问题:WP7 should support Reflection.Emit for Mocking frameworks
编辑2/12/2011: Mango支持Reflection.Emit。太好了!基于Reflection.Emit的Mocking框架应该可以直接工作。
我刚刚得到了TypeMock Isolator,它可以与Windows Phone 7(有点)兼容。
你需要创建一个默认的Visual Studio测试项目,然后会出现一个错误提示,说你的Windows Phone 7项目无法被引用,但由于某种原因,模拟和测试完美地工作。
总之,我对它所能创建的模拟非常满意。
任何支持 Silverlight 3 的模拟框架都应该可以在 Windows Phone 7 上使用。不过,您可能需要使用先前版本的框架来“降级”到 Silverlight 3。
我想提醒一下我在MSDN上发现的一些信息:
由于无法在Windows Phone平台上使用Mocking框架,因此需要手动开发模拟类。Mocking框架需要能够发出Microsoft中间语言(MSIL)代码的功能,而在Windows Phone平台上目前无法实现该功能。