Robolectric简单实例.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单理解原理:Android的app需要运行在delvik上面,我们开发的Android app是在JVM上面,开发之前需要下载各个API-Level的SDK,下载的每个SDK都有一个android.jar包,在android_sdk_home/platforms/下面可以看到。开发一个项目的时候,我们需要指定一个API-Level,其实就是将android.jar加入到这个项目的build path里面去。这样项目就可以编译打包了。我们的代码必须运行在真机或模拟器上面。IDE和SDK只提供了开发和编译一个项目的环境,并没有提供运行这个项目的环境,原因是因为android.jar里面的class实现是不完整的,它们只是一些stub,如果打开android.jar下的代码去看,发现所有方法只有一行实现:Throw RuntimeException(“stub!!”);运行的单元测试代码要引用android.jar相关代码,就要提供一套完整的运行环境。为了解决这个问题,提出了MVP、MVVM等架构,架构其实是将一层抽离出来。Robolectric就是这样的:通过实现一套JVM能运行的Android代码,然后在运行单元测试代码时去截取android的相关代码调用,然后转到他们的实现代码去执行这个调用过程。Robolectric环境搭建(Windows环境下Android Studio):Gradle中app下的build.gradle中:Dependencies{…testCompile ‘junit:junit:4.12’testCompile “org.robolectric:robolectric:3.0”}注意:如果写成testCompile,则测试代码放在test文件夹中;如果写成androidTest,则测试代码放在androidTest文件夹中。其中的Robolectric最新版本号可能会变,可以上jcenter查看一下最新的版本号。Android Studio中配置:1.将Build Variant里面的Test Artifact选择为Unit Test,如果找不到Build Variant,可以选择View-Tool Windows-Build Variant。2.Mac下还需要配置一个东西:菜单栏选择Run-Edit Configuration-Defaults-JUnit,在Configuration tab将working directory改成$MODULE_DIR$。这个配置是Robolectric官方文档提到的。注意:Robolectric目前不支持android 5.1 API Level22,编译时sdk=21或者一下。项目工程与test工程:项目工程是放在app/src/main/java/com/example/administrator/robolectricdemo下,测试工程是放在app/src/test/java/com/example/administrator/robolectricdemo下。注意:单元测试test工程在编译打包时并不会编译进apk中。Github Demo:地址:/ChrisZou/robolectric-demo简单实例:假设app里面有两个activity:MainActivity和LoginActivity,MainActivity如上图所示的工程,为了方便查看最好在测试工程里边定义为MainActivityTest。MainActivity里边有一个Button,点击这个Button跳转到LoginActivity,MainActivity里边代码大概是:对应的测试类,MainActivityTest代码:写完之后,开始运行:直接右键运行。启动命令行,cd到项目根目录下,运行./gradlew test(windows运行gradlew test),等待几秒钟,可以看到运行结果。注意:第一次运行可能需要下载一些library,或者gradle本身,可能需要花一些时间,这个跟unit test本身无关。Mocking框架并不是必须的:结合mock框架例如mockito或者模拟出Android SDK,允许测试风格更接近于黑盒测试,使测试更有效的重构和允许测试关注应用程序的行为,而不是Android的实现。Wiki地址:/index.htmlConfiguring Robolectric定制Robolectric如何在运行时的行为。@Config注释。注释可以应用到类和方法,在类或方法前加该注释。Configure SDK LevelRobolectric将对你在清单文件中指定的targetSdkVersion进行测试,如果你想测试特定的代码在不同的sdk中的

文档评论(0)

js1180 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档