写了多年的安卓应用程序,大大小小的项目也开发了若干个,要做单元测试的口号也喊了很多年,可一直没有实践过。相信很多人跟我一样,心里一直想做却没做起来。总结了下主要有以下几个原因:
1.早期的安卓应用程序都是采用MVC模式,基本上Activity里既包括了UI相关的内容,也包括了各种业务逻辑的处理,这样的Activity我们称之为god class。这样会导致很多业务逻辑处理的地方都会涉及到UI相关,而凡是涉及到UI的地方,想要去写单元测试几乎是一场灾难;
2.早期Google没有提供比较方便、简单、易用的单元测试工具,原来的单元测试必须要在安卓环境上才能运行。这样对开发非常不友好,我写一个很简单的单元测试代码,运行的时候必须要先打包,然后再跑在真机或者模拟器上。如果大家用eclipse开发过安卓程序,估计都体验过漫长的打包过程,动不动就卡死了,等个老半天才能出一个结果,说多了都是泪。
3.对单元测试的理解不够深刻。APP开发出来后,大家都是直接扔给测试人员来进行测试,心里会下意识地觉得测试应该是测试人员干的活,我是干开发的,不应该干测试的活。
4.公司老板不重视测试。有些老板认为测试是浪费时间,特别是APP测试,他们会认为APP只要尽快实现功能,功能测试通过就OK了。(曾经呆过的某公司老板就是这样,特别排斥测试人员,觉得招聘测试人员就是浪费钱,奇葩的是公司现在做的很大。)
5.国内大环境氛围太差。大部分时候,大家都在赶着开发新功能,赶上线,以至于单元测试这件事情,通常都会被忽略,甚至从来没考虑过。而这一点在移动开发上更甚,这样导致在网上很难找到比较全面的关于APP单元测试的文章来学习,让想做单元测试的同学都不知道从何下手,因此陷入了一个恶性循环。
现在由于工作的原因,需要开始写单元测试,加上自己对单元测试也很感兴趣,研究了不少关于Android的测试方案并付诸实践,取得了良好的效果,特将这些经验和想法整理成一系列的文章,希望其他同学在这方面少走一些弯路。
系列文章: