针对于第二点,在Android开发中,MVP是常用的开发模式:
对于一个View或者一组功能几乎相同的View,他们有自己M层数据,和相同的P层控制层。
我们都知道P层是处理业务逻辑的地方,所以测试类所测试的方法,都是P层的方法。
如果你代码设计合理,P层会覆盖所有的业务逻辑,而V层只处理UI更新而已。
所以MVP和单元测试相辅相成。
可以测试的范围有:
-
逻辑复杂的
-
容易出错的
-
不易理解的
有助于理解代码的功能和需求
- 公共代码
比如工具类
- 核心业务代码
一个产品里最核心最优业务价值的代码应该要有较高的单元测试覆盖率
不能测试的地方:
就是不能依赖系统变量,即同样的输入值,却会输出不同的输出值(比如用到了时间戳)
单元测试只能依赖传入的参数。
AIR原则
- Automatic 自动化
全自动执行的,并非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。
单元测试中不准使用print、echo来进行人肉验证,必须使用assert来验证。
- Independent 独立性
保持单元测试的独立性,单元测试用例之间绝不能互相调用,也不能依赖执行的先后次序
- Repeatable 重复性
单元测试是可以重复执行的,不能收到外界环境的影响,因为单元测试通常会被放到持续集成中,每次有代码check in时单元测试都会被执行。如果单测对外部环境(网络、服务等)有依赖,容易导致持续集成机制的不可用
===========================================================================
Junit4是事实上的Java标准测试库,并且它是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。这也说明想要使用Jnit4,得有JDK1.5以上
也就是说