Windows Phone 7的模拟框架是什么?

8

有没有适用于Windows Phone 7的模拟框架,还是我需要手动创建假对象?

我在谷歌上没有找到任何相关内容,虽然我在WP7资源页面上找到了Moq,但我无法让它正常工作。

5个回答

14

目前没有支持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框架应该可以直接工作。


关于您编辑2/12/2011的内容 - System.Reflection.Emit命名空间存在,但它在WP7 Silverlight上包含的具体类大幅减少,据我所知。您是否知道其中是否有足够支持模拟测试的内容? - Johann Gerell
1
我刚发布了一个Windows Phone 7的模拟框架的早期版本:http://moqalate.codeplex.com/ http://www.dontcodetired.com/blog/post/Introducing-%28probably%29-The-Worlds-Only-Mocking-Framework-for-Windows-Phone-7-%28WP7%29.aspx - Jason Roberts

4

我不知道目前有任何可用的。

David Gadd的这篇文章展示了使用手动创建的虚拟对象在手机上进行测试的示例,可能是一个有用的资源。


3

我刚刚得到了TypeMock Isolator,它可以与Windows Phone 7(有点)兼容。

你需要创建一个默认的Visual Studio测试项目,然后会出现一个错误提示,说你的Windows Phone 7项目无法被引用,但由于某种原因,模拟和测试完美地工作。

总之,我对它所能创建的模拟非常满意。


0

任何支持 Silverlight 3 的模拟框架都应该可以在 Windows Phone 7 上使用。不过,您可能需要使用先前版本的框架来“降级”到 Silverlight 3。


0

我想提醒一下我在MSDN上发现的一些信息:

http://msdn.microsoft.com/en-us/library/hh821022.aspx#sec2

由于无法在Windows Phone平台上使用Mocking框架,因此需要手动开发模拟类。Mocking框架需要能够发出Microsoft中间语言(MSIL)代码的功能,而在Windows Phone平台上目前无法实现该功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接