当前位置: 首页 > news >正文

儿童教育网站模板杭州品牌策划公司

儿童教育网站模板,杭州品牌策划公司,重庆网站建设合肥公司,深圳网站建设公司怎么做文章目录 一、前言二、简单示例三、注意事项四、另一种写法五、拓展六、参考文档 一、前言 Robolectric 是一个由 Google 维护的开源 Android 测试框架#xff0c;它允许你以 Android 运行时环境运行单元测试。 Robolectric 提供了一个模拟 Android 运行时环境#xff0c;允… 文章目录 一、前言二、简单示例三、注意事项四、另一种写法五、拓展六、参考文档 一、前言 Robolectric 是一个由 Google 维护的开源 Android 测试框架它允许你以 Android 运行时环境运行单元测试。 Robolectric 提供了一个模拟 Android 运行时环境允许你测试你的代码是否正确地使用 Android API。 所以在不依赖于手机的情况下可以对android项目进行测试。当然也可以在有手机的时候对Android项目进行测试 二、简单示例 以下代码源自官方文档并进行简单完善。 文件位于src/app/test/下面 import android.content.Intent import android.widget.Button import com.example.myapplication.R import com.example.myapplication.hilt.App import com.example.myapplication.material.MaterialTestActivity import com.example.myapplication.roll.PaintedScrollActivity import junit.framework.TestCase.assertEquals import org.junit.Test import org.junit.runner.RunWith import org.robolectric.Robolectric import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment import org.robolectric.Shadows.shadowOf import org.robolectric.annotation.ConfigRunWith(RobolectricTestRunner::class) Config(application App::class, sdk [28]) class RobolectricTest {// get:Rule // JvmField // val executorRule InstantTaskExecutorRule()Testfun clickingLogin_shouldStartLoginActivity() {Robolectric.buildActivity(MaterialTestActivity::class.java).use { controller -controller.setup() // Moves the Activity to the RESUMED stateval activity controller.get()activity.findViewByIdButton(R.id.button).performClick()val expectedIntent Intent(activity, PaintedScrollActivity::class.java)val actual shadowOf(RuntimeEnvironment.getApplication()).nextStartedActivity//新版写法使用如下方式//val actual shadowOf(androidx.test.core.app.ApplicationProvider.getApplicationContextApp()).nextStartedActivityprintln(YM-----,actual-- ${actual.component?.className}----expectedIntent.name:${expectedIntent.component?.className})assertEquals(expectedIntent.component, actual.component)}}}这里需要注意的是需要添加 Config(application App::class, sdk [28])其中App是应用的Application文件。否则会有各种问题最主要是提示不是主线程的问题。如果没有Application的话可以使用另外一种方式。这种方式需要添加如下依赖 testImplementation androidx.arch.core:core-testing:2.1.0然后添加以下代码 get:RuleJvmFieldval executorRule InstantTaskExecutorRule() 不过Config也需要添加版本 Config(sdk [28]) 三、注意事项 后面又经过测试发现上述代码即使不在Config中添加App也可以运行,如 Config(application App::class, sdk [28]) // X error //改为 Config(sdk [28]) // 也是可以运行的同时下面代码也没有 // get:Rule // JvmField // val executorRule InstantTaskExecutorRule()根据官网来说如果不设置App的话会自动使用程序定义的Application但是之前代码确实一直运行失败这里留作记录。 参考链接 四、另一种写法 这里提供另外一个测试示例需要注意的是其中断言可以使用以下任意一种库 testImplementation com.google.truth:truth:1.1.3 testImplementation org.assertj:assertj-core:3.24.2以下是不同断言的区别 断言库适用场景优势适用语言JUnit Assertions最基础的测试轻量级适合简单测试Java, AndroidGoogle TruthAndroid 开发可读性好官方推荐Java, AndroidAssertJJava 后端、复杂测试功能最强大链式断言JavaHamcrest传统 JavaJUnit 4 时代流行JavaKotest/StriktKotlin 测试Kotlin DSL 语法更友好Kotlin 其中使用AssertJ的话需要额外依赖Junit库 Testfun locationListenerShouldBeUnregisteredInCreatedState() {// GIVENval controller Robolectric.buildActivityMaterialTestActivity(MaterialTestActivity::class.java)controller.setup()// WHENcontroller.pause().stop()// THENassertThat(controller.get().locationListener).isNull()}Testfun locationListenerShouldBeUnregisteredInCreatedState2() {// GIVENval scenario ActivityScenario.launchMaterialTestActivity(MaterialTestActivity::class.java)// WHENscenario.moveToState(Lifecycle.State.CREATED)// THENscenario.onActivity { activity -assertThat(activity.locationListener).isNull()}}五、拓展 关于mock的含义mock的作用的在测试过程中对某些功能进行模拟保证流程能够执行下去但是数据并不对。比如说假如自己写的一个类需要传递Context才能保证不崩溃那么可以使用mock进行模拟。 六、参考文档 Robolectric 策略robolectric构建本地单元测试Robolectric 4.0AndroidX Testmockitomockito-kotlin
http://www.w-s-a.com/news/609120/

相关文章:

  • j2ee网站开发搜索推广的流程
  • 网站目录结构图虚拟主机如何安装WordPress
  • 信产部网站备案保定软件开发网站制作
  • 东莞网站设计定做东莞网站建设最牛
  • 网站开发的软件天猫的网站导航怎么做的
  • 做链接哪个网站好网站建设平台方案设计
  • 资质升级业绩备案在哪个网站做网站建设方案费用预算
  • 做网站找哪个平台好wordpress 3.9 性能
  • 大兴模版网站建设公司企业网站备案案例
  • h5建站是什么wordpress客户端 接口
  • 济南自适应网站建设制作软件下载
  • 望都网站建设抖音广告投放收费标准
  • 网站制作软件排行榜上海市网站建设公司58
  • 什么是网站风格中国工商网企业查询官网
  • 专业建设专题网站wordpress lnmp wamp
  • 环保网站 下载页网站
  • 开源小程序模板江门关键词优化排名
  • 网站开发 知乎房地产型网站建设
  • 买完域名网站怎么设计wordpress 纯代码
  • 公司网站怎么做百度竞价宁波网络公司哪家好
  • 河西网站建设制作微信分销系统多层
  • 网站制作完成后应进入什么阶段石家庄网站建设找哪家好
  • 南通外贸网站推广自在源码网官网
  • 个人网站模板html下载餐饮vi设计案例欣赏
  • 高端网站建设wanghess网站开发售后服务承诺
  • 江西网站建设费用企业网站推广的方法有( )
  • 中国十大网站开发公司企业网站建设的要素有哪些
  • 网站防站做网站吉林
  • 嘉定区网站建设公司企业信息公示查询系统官网
  • 一个具体网站的seo优化产品介绍网站模板下载地址