Android 仪器化单元测试(instrumented unit tests) Androidx kotlin版本(1)

  • 配置build.gradle依赖

dependencies {

androidTestImplementation ‘androidx.test🏃1.4.0’

androidTestImplementation ‘androidx.test:rules:1.4.0’

}

android {

defaultConfig {

testInstrumentationRunner “androidx.test.runner.AndroidJUnitRunner”

}

}

测试样例


测试代码

本例子参考google官方网站。因为官网里面很多类没有给到,所以进行了一波补充完善。➡️➡️➡️➡️点击可前往官网

以下示例显示了如何编写仪器单元测试来验证 Parcelable接口是否被 LogHistory类正确实现:🙆‍♀️

import android.os.Parcel

import android.os.Parcelable

import android.os.Parcelable.Creator

import androidx.test.runner.AndroidJUnit4

import org.junit.Assert

import org.junit.Before

import org.junit.Test

import org.junit.runner.RunWith

const val TEST_STRING = “This is a string”

const val TEST_LONG = 12345678L

// @RunWith is required only if you use a mix of JUnit3 and JUnit4.

@RunWith(AndroidJUnit4::class)

class LogHistoryAndroidUnitTest {

private lateinit var logHistory: LogHistory

@Before

fun createLogHistory() {

logHistory = LogHistory(TEST_STRING, TEST_LONG)

}

@Test

fun logHistory_ParcelableWriteRead() {

val parcel = Parcel.obtain()

logHistory.apply {

// 写数据

writeToParcel(parcel, describeContents())

}

// 完成写入后,置包裹以进行读取。

parcel.setDataPosition(0)

// 读取数据

val createdFromParcel: LogHistory = LogHistory.CREATOR.createFromParcel(parcel)

// 验证数据的正确性

Assert.assertTrue(“error TEST_STRING”, createdFromParcel.strValue == TEST_STRING)

Assert.assertTrue(“error TEST_LONG”, createdFromParcel.longValue == TEST_LONG)

}

}

class LogHistory(val strValue: String = “”, val longValue: Long = 0L) : Parcelable {

constructor(source: Parcel) : this(source.readString() ?: “”, source.readLong())

companion object {

val CREATOR: Creator = object : Creator {

override fun createFromParcel(source: Parcel?): LogHistory = LogHistory(source!!)

override fun newArray(size: Int): Array = Array(size) { LogHistory() }

}

}

override fun describeContents(): Int = 0

override fun writeToParcel(dest: Parcel?, flags: Int) {

dest!!.writeString(strValue)

dest.writeLong(longValue)

}

}

运行

  1. 确保已经链接手机

  2. 点击下图2所示的箭头

  3. 点击run在真机上运行

结果

​ 通过测试结果可以清晰看到状态passed,代表测试成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2jjQOJw0-1639124297064)(E:\Documentation\My_Learn_Documentation_Git\android\pic_android\run_result.png)]

​ 那如果把Assert.assertTrue("error TEST_LONG", createdFromParcel.longValue == TEST_LONG)改为Assert.assertTrue("error TEST_LONG", createdFromParcel.longValue == 0L呢?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mltP6P50-1639124297064)(E:\Documentation\My_Learn_Documentation_Git\android\pic_android\run_error.png)]

​ 可以看到巨大的failed,还可以点开错误日志,看到报错的信息!!!

一键测试所有


以上的测试只能一个一个的点,如果我写好了一堆单元测试,想要一键测试,应该怎么做呢?😮

引入

下面引入@Suite.SuiteClasses

  • 将需要进行一键测试类上方增加@Suite.SuiteClasses注解

  • 新建类的入口,引入需要一键执行的类,并且需要新增@RunWith(Suite::class)与@Suite.SuiteClasses(Class...)注解

举个🌰

  • 我们有两个类都写了单元测试,如下所示:

最后

跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-71gVWokM-1714558257762)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值