1、Instrumentation原理是什么?
Instrumentation它是通过直接调用被测试App的类直接调用代码,然后实现的一些自动化技术,它必须要求和被测App在同一个进程内。
图解:这张图分为几个部分,先看最右侧外面框,底部显示“Android Process”它把myAppTests.apk和myApp.apk圈到一起,意思是他两个需要在同一个进程内,如何实现在同一个进程内?Android系统如果发现两个App包名是完全一样的那就认为两个包是同一个App,所以那可以通过从签名来实现让系统认为测试App和被测App是同一个进程,当然同一个进程里面是通过分别一个独立的线程来完成它的测试操作。即然需要签名就需要一个apk文件,myAppTests.apk通过Instrumentation技术控制被测myApp.apk,myAppTests.apk文件是由InstrumentationTestRunner进行控制各种方法运行。
左侧分为两个部分,上面部分为“command line”,下面部门标记为“Eclipse”所有的代码编写在Eclipse完成的,可以看到里面写着“Run as >Android JUnit Test”意思是所有的源码都是使用Java程序去写使用的是JUnit测试框架,使用Eclipse执行测试方法可以输出测试结果“test output”,不在eclipse去执行测试用例集,也可以在命令行去执行“$test command”可以看到输出。
2、Instrumentation测试什么?
功能测试
Activity声明周期的测试
模拟数据库操作的测试和兼容性测试
3、什么情况使用Instrumentation?
使用Java JUnit框架
需要进行白盒测试时
需要使用Mock技术模拟系统对象时