「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

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

2012 年 2 月 21 日

目前具体平台的一个问题是缺乏单元测试的支持。开发者被迫在测试的质量和构建流程之间做出妥协,以便一切能够工作起来。最近 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

2012 年 2 月 21 日 18:511122

评论

发布
暂无评论
发现更多内容

python——深入类和对象

菜鸟小sailor 🐕

一次代码评审,差点过不了试用期!

小傅哥

Java 小傅哥 代码质量 代码优化 代码规范

音乐创作者必备软件,轻松玩转原创

奈奈的杂社

音乐制作 编曲 电音 作曲 乐团

所见即所得的用户增长技术背后是如何实现的

海豚调度

用户增长 大数据技术 大数据架构 用户增长技术 ad-hoc技术

拥抱K8S系列-07-部署K8S集群(Rancher)

张无忌

Kubernetes rancher

我敢说,这个版本的斗地主你肯定没玩过?

华为云开发者社区

命令行 游戏 斗地主

如何搭建第一个 Spring 项目?

小齐本齐

spring Spring Framework Spring Bean

两年Java工作经验涨到23K,这究竟是怎么做到的?

Java架构师迁哥

高并发系列——CAS操作及CPU底层操作解析

诸葛小猿

CAS AtomicInteger compareAndSwap cmpxchg lock

不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

海星

Mysql学习笔记:分库分表(sharding)

马迪奥

MySQL Sharding

Js 封装:阻止频繁重复操作

lockdown56

oeasy 教您玩转 linux 010214 画面转文字 asciiview

o

Java String 面面观

keaper

Java string pool string

云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心

华为云开发者社区

gpu caffe

区块链技术最重要价值所在

CECBC区块链专委会

区块链 数字经济 互联网革命

SpringBoot写后端接口,看这一篇就够了!

华为云开发者社区

后端 swagger pringboot

RabbitMQ 重要概念介绍

hepingfly

Java RabbitMQ 消息队列 JMS

Spring 5 中文解析测试篇-WebTestClient

青年IT男

单元测试 Spring5

有关 HashMap 面试会问的一切

小齐本齐

Java 数据结构 算法

解Bug之路-记一次JVM堆外内存泄露Bug的查找

无毁的湖光

Linux JVM heap memory GC Linux Kenel

架构师期末作业

傻傻的帅

知识点总结

Acker飏

Spring事务是如何应用到你的业务场景中的?

AI乔治

Java spring 架构 微服务 springboot

Spring IoC 到底是什么?

小齐本齐

spring 程序员 ioc Spring Framework Spring Bean

区块链技术与我们的生活将并存

CECBC区块链专委会

区块链 数字经济

甲方日常 14

句子

Java 工作 随笔杂谈 日常

区块链交易系统开发,期货合约平台搭建

13823153121

Mysql学习笔记:InnoDB索引结构浅析

马迪奥

MySQL 索引结构 innodb

端-边-云全面协同创新 英特尔携手百度共推产业智能化升级

新闻科技资讯

设计模式只是一把锤子

博文视点Broadview

读书笔记 编程 面向对象 设计模式

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