BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用.NET/Mono在移动设备上进行单元测试

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 李永伦 关注 0 他的粉丝 发布于 2012年2月22日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

目前具体平台的一个问题是缺乏单元测试的支持。开发者被迫在测试的质量和构建流程之间做出妥协,以便一切能够工作起来。最近MonoTouch在这个方面取得了进展,但Windows Phone和Mono for Android仍然落后。

Windows Phone 7 / Silverlight

Windows Phone 7的开发者可以通过两个途径进行测试。第一个是修改Silverlight单元测试框架,使之能够运行在Windows Phone设备上。许多Silverlight开发者已经对此熟悉,这个单元测试框架本身还在“试验阶段”,修改需要支持大量测试。Jeff Wilcox为Silverlight 3和Windows Phone 7.0的单元测试提供了一个修改。

利处:提供的测试比其他选择更加精确。
弊处:不能包含到构建流程里,没有IDE支持。(译注:CodePlex上有个Windows Phone Essentials的开源项目提供了Visual Studio测试项目模版,支持通过NuGet安装,能和Jeff Wilcox修改的单元测试框架一起工作。)

Christofer Löf采用了完全不同的途径。他不是把一个测试框架放到Windows Phone里,而是把他要测的代码拿出来。通过Portable Library Tools实现他的模型和视图模型,他可以在标准的单元测试框架以及设备上运行相同的代码。不幸的是,Portable Library并不支持ObservableCollection,需要使用“ListFactory”提供正确的类型。

利处:可以包含到构建流程里,可以使用任何标准单元测试框架,支持IDE整合。
弊处:Portable Library Tools只提供有限的API。

第三个途径是使用单独的项目共享相同的源代码。在理想情况下,代码是一样的,但可以通过预处理器指令处理大部分差异。如果你打算在MonoTouch和Mono for Android上共享相同的代码,这种做法就很有意义了,因为它们需要分开构建。

利处:可以包含到构建流程里,可以使用任何标准单元测试框架,支持IDE整合。
弊处:构建时间更长,平台之间的差异可能带来问题。

iOS / MonoTouch

MonoTouch最近有了一个在设备上执行的单元测试框架。和Windows Phone版本的不同,这个是官方支持的。Touch.Unit框架本质上只是一个测试执行器,并为MonoDevelop提供了基本的IDE支持。它的核心是NUnitLite,NUnit框架的一个子集,专门为有限资源的设备量身定做的。

利处:提供的测试比其他选择更加精确。
弊处:不能包含到构建流程里,没有IDE支持。

在Touch.Unit发布之前,开发者需要使用单独的项目共享相同的源代码,就像Windows Phone那样。不过,在这里他们将会使用完整的Mono运行时和NUnit而不是微软的相关平台和技术。

利处:可以包含到构建流程里,支持IDE整合。
弊处:构建时间更长,平台之间的差异可能带来问题。

Android / Mono for Android

目前为Mono for Android项目做单元测试的唯一选择是使用多个项目。Mono for Androidhi阿不够MonoTouch成熟,但最终我们应该可以看到一个类似的测试框架。

查看英文原文:Unit Testing on Mobile Devices with .NET/Mono

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT