主页 > 其他  > 

Android中使用Robolectric测试点击事件(不需要手机)

Android中使用Robolectric测试点击事件(不需要手机)

文章目录 一、前言二、简单示例三、参考文档

一、前言

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() @Test fun clickingLogin_shouldStartLoginActivity() { Robolectric.buildActivity(MaterialTestActivity::class.java).use { controller -> controller.setup() // Moves the Activity to the RESUMED state val activity = controller.get() activity.findViewById<Button>(R.id.button).performClick() val expectedIntent = Intent(activity, PaintedScrollActivity::class.java) val actual = shadowOf(RuntimeEnvironment.getApplication()).nextStartedActivity println("YM----->,actual--> ${actual ponent?.className}---->expectedIntent.name:${expectedIntent ponent?.className}") assertEquals(expectedIntent ponent, actual ponent) } } }

这里需要注意的是需要添加

@Config(application = App::class, sdk = [28])

其中App是应用的Application文件。否则会有各种问题,最主要是提示不是主线程的问题。如果没有Application的话,可以使用另外一种方式。这种方式需要添加如下依赖

testImplementation "androidx.arch.core:core-testing:2.1.0"

然后添加以下代码

@get:Rule @JvmField val executorRule = InstantTaskExecutorRule()

不过@Config也需要添加版本 @Config(sdk = [28])

三、参考文档 Robolectric 策略robolectric构建本地单元测试
标签:

Android中使用Robolectric测试点击事件(不需要手机)由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Android中使用Robolectric测试点击事件(不需要手机)