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

宁波市高新区建设局网站国产4k高清电视十大排名

宁波市高新区建设局网站,国产4k高清电视十大排名,网站设计与制作优点,知名网络公司有哪些文章目录 一、前言二、简单示例三、注意事项四、另一种写法五、拓展六、参考文档 一、前言 Robolectric 是一个由 Google 维护的开源 Android 测试框架,它允许你以 Android 运行时环境运行单元测试。 Robolectric 提供了一个模拟 Android 运行时环境,允…

文章目录

  • 一、前言
  • 二、简单示例
  • 三、注意事项
  • 四、另一种写法
  • 五、拓展
  • 六、参考文档

一、前言

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.Config@RunWith(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.findViewById<Button>(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.getApplicationContext<App>()).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:Rule@JvmFieldval 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, Android
Google TruthAndroid 开发可读性好,官方推荐Java, Android
AssertJJava 后端、复杂测试功能最强大,链式断言Java
Hamcrest传统 JavaJUnit 4 时代流行Java
Kotest/StriktKotlin 测试Kotlin DSL 语法更友好Kotlin

其中使用AssertJ的话需要额外依赖Junit库

    @Testfun locationListenerShouldBeUnregisteredInCreatedState() {// GIVENval controller = Robolectric.buildActivity<MaterialTestActivity>(MaterialTestActivity::class.java)controller.setup()// WHENcontroller.pause().stop()// THENassertThat(controller.get().locationListener).isNull()}@Testfun locationListenerShouldBeUnregisteredInCreatedState2() {// GIVENval scenario = ActivityScenario.launch<MaterialTestActivity>(MaterialTestActivity::class.java)// WHENscenario.moveToState(Lifecycle.State.CREATED)// THENscenario.onActivity { activity ->assertThat(activity.locationListener).isNull()}}

五、拓展

关于mock的含义,mock的作用的在测试过程中对某些功能进行模拟,保证流程能够执行下去,但是数据并不对。比如说假如自己写的一个类,需要传递Context才能保证不崩溃,那么可以使用mock进行模拟。

六、参考文档

  1. Robolectric 策略
  2. robolectric
  3. 构建本地单元测试
  4. Robolectric 4.0
  5. AndroidX Test
  6. mockito
  7. mockito-kotlin
http://www.yayakq.cn/news/774029/

相关文章:

  • 专业网站设计计算机软件开发是干什么的
  • 赣州网站开发公司网页设计与制作教程第二版考试
  • 公司网站的好处想做直播电商怎么入手
  • 网站建设运营的灵魂是什么意思宁夏建设工程质量网站
  • WordPress能够做小说网站吗买商标价格一览表
  • 2017做网站挣钱哈尔滨网站优化
  • 用家用路由器ip做网站成品网源码7w8w
  • 微网站免费建设平台网站建设套餐是什么
  • 网站建设九步走中信建设公司好进去吗
  • 横琴网站建设相城高端网站建设
  • 怎么学网站设计wordpress使用数据库
  • 深圳网站建设价钱重庆市城市建设综合开发办网站
  • 天河区网站建设php可视化网站开发工具
  • 有哪些网站是做视频的中华商标交易网官方网站
  • 网站建设实施方案睢宁微网站开发
  • 德州市住房建设局网站百度关键词指数排行
  • 定制网站设计公司网站后台内容管理
  • 温州人才网站开发湖南省建设工程信息网站
  • 做的不好的网站h5语言网站制作
  • 网站自然排名优化优秀文创产品设计案例及分析
  • 网站建设吉金手指排名13站长工具端口
  • 手机网站开发屏幕尺寸一般是多少百度推广怎么优化排名
  • 途途外贸企业网站管理系统专门做2次元图片的网站
  • 宁波网站建设最好建筑企业信息查询平台
  • 网站内链优化网站建设 慕课
  • 个人网站收款教你做文案的网站推荐
  • 做钓鱼网站盗游戏号会被判刑吗wordpress 更新慢
  • 深圳坑梓网站建设wordpress yeti1.92
  • 台州地区网站建设小程序制作模板网站
  • 行业网站有哪些平台做抽纸行业网站