Android_AndroidX简介&Junit4
AndroidX简介:
Android 9.0(API level 28)发布时,AndroidX也作为一个新的支持库发布出来了。AndroidX时Jetpack的一部分,它包含了现有的支持库和最新的Jetpack组件。
AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了支持库(android.support.v7或android.support.v4),不仅提供同等的功能,而且提供了新的库。所以对于使用AndroidX后,不需要因为使用v4还是v7库而烦恼了。
修改项目中的gradle.properties文件中将下面两个属性置为true就能完全使用AndroidX的库了。
android.useAndroidX:使用相应的 AndroidX 库,而非支持库
android.enableJetifier:重写其二进制文件,自动迁移现有的第三方库以使用 AndroidX
更多具体信息及如何使用请到android官网查看文档:
https://developer.android.google.cn/jetpack/androidx
Junit4:
这里简单记录分享下
背景:Android Studio中调试Room相关时碰到的问题(如 java.lang.ClassNotFoundException: Didn't find class "android.support.test.runner.AndroidJUnitRunner" )
Room调试中使用的是AndroidX的库,而默认Junit使用的是非AndroidX库,导致出现各种报错。理清这个,修改下依赖库即可解决问题。
1.在默认情况下,Android Studio使用的是非AndroidX支持库中的Junit的相关库,build.gradle(Module:app) 中关于Junit大概配置如下:
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.flx.testjunit"
minSdkVersion 27
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
2.AndroidX库关于Junit的配置如下。
如AndroidX简介中所述,gradle.properties(Project Properties)中添加:
android.useAndroidX=true
android.enableJetifier=true
build.gradle(Module:app) 中:
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.flx.testjunitandroidx"
minSdkVersion 27
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
implementation 'com.google.android.material:material:1.0.0-beta01'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}
修改配置后 重新Build下工程,具体类中报错重新import对应的库类即可。
运行Junit:
下面是简单的示例图片

从上面看:
(1)点击1处的Structure即可出现2的窗口,右击2处即可执行
(2)4和5处已经左边有明显的结果提示,如上”passed:1 of 2“。5处有具体报错信息。
(3)3处有androidTes和test两个文件夹,有什么区别呢,
androidTest/java: Android单元测试,执行测试的时候需要连接Android设备(或AVD),需要Android环境。
test/java: JUnit单元测试,不需要Android依赖,运行在当前电脑中。
下图是便捷的创建测试:

常用断言:
assertEquals, 预期和实际相等,不相等则抛出异常和信息
assertNotEquals, 预期和实际不相等,相等则抛出异常和信息
assertNull,传入的为空,不为空抛出异常和信息
assertNotNull,传入非空,为空时抛出异常和信息
assertTrue,断言为真,如果为假(false)则抛出异常和信息
assertFalse,断言为假,如果为真(true)则抛出异常和信息
assertSame,引用同一对象,如果不是则抛出异常和信息
assertNotSame, 引用不同对象,如果是同一对象则抛出异常和信息
下面的例子的断言都是OK的,没有异常:

Android_AndroidX简介&Junit4的更多相关文章
- Android_存储之DataBase之Room
概述: Room是Google在AndroidX中提供的一个ORM(Object Relational Mapping,对象关系映射)库.它是在SQLite上提供的一个抽象层,可以使用SQLite的全 ...
- Junit4使用实验报告
一.题目简介 Junit4的使用及求和测试. 二.源码的github链接 https://github.com/bjing123/test-/blob/master/Arithmetic.txt ht ...
- JUnit之断言assert
一.简介 JUnit4.4引入了Hamcrest框架,Hamcest提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活: 使用全新的断言语法:assertThat,结合Ham ...
- 我的Android知识结构图——20200507停止更新,后续通过标签或分类继续完善结构图
*持续更新中.调整中(带链接的是已经总结发布的,未带链接是待发布的) *个别知识点在多个分类中都是比较重要部分,为了分类完整性 可能多出都列出了 *每一篇都是认真总结并写出来的,若哪里有问题欢迎指正 ...
- JUnit4测试简介
相比于自己写一个测试类,在里面调用调试方法,使用JUnit4进行测试有很多的优点,极大的提高了测试的速度.本文简单介绍如何使用myEclipse10使用JUnit4,方便日后回顾总结. myEclip ...
- 1.3 Junit4简介
1.Junit4框架 可用于单元测试,直接测试类中的方法 2.简单实用 a.导入Junit的jar包 b.熟悉Junit的执行顺序 c.写测试用例 d.利用断言,找bug 3.demo public ...
- JUnit 简介
一.简介 JUnit是一个开源的java单元测试框架.在1997年,由 Erich Gamma 和 Kent Beck 开发完成.这两个牛人中 Erich Gamma 是 GOF 之一:Kent Be ...
- maven 简介
本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...
- 使用JUnit4与JMockit进行打桩测试
1. 何为Mock 项目中各个模块,各个类之间会有互相依赖的关系,在单元测试中,我们只关心被测试的单元,对于其依赖的单元并不关心(会有另外针对该单元的测试). 比如,逻辑层A类依赖了数据访问层B类的取 ...
随机推荐
- shell字符串索引
shell中的字符串索引一会从0开始,一会从1开始,见例子: #!/bin/bash string="hello world" length=${#string} echo &qu ...
- vue后台管理系统介绍
项目GitHub地址:https://github.com/Little-Orange7/cmms-vue 一.简介 很多公司稍微复杂一点的业务,基本上都需要后台管理系统,来对业务进行各个维度的统计. ...
- Leetcode_45. 跳跃游戏 II
每个位置i有一个最大跳跃距离,求最小步数从0跳到n-1. dp[i]表示从0跳到i的最少步数,显然可以转移的状态就是从i-a[i]到i-1. 因为是最小步数,考虑用优先队列优化,再考虑到状态有范围的, ...
- [hdu4292]最大流,拆点
题意:给定每个人所喜欢的食物和饮料种类以及每种食物和饮料的数量,一个人需要一种食物和一种饮料(数量为1即可),问最多满足多少人的需要 思路:由于食物和饮料对于人来说需要同时满足,它们是“与”的关系,所 ...
- SpringBoot + SpringCloud的爬坑之旅
1,application.yaml中配置没有生效问题解决 如果配置文件确认没有错误但是没有生效首先是要到编译目录去查看是否被编译过去了,如果没有,请先将项目clean在重启 但是idea启动项目时也 ...
- 三个方法生成python的exe文件
背景:用的python3.8 方法一:用cmd 输入[pip3 install pyinstaller] 上一条指令报错 事实上,在python3.8版本时,输入pip也会显示是无法支持的语句,需要用 ...
- md5函数
0x01 <?php error_reporting(0); $flag = 'flag{test}'; if (isset($_GET['username']) and isset($_GET ...
- pc建站自适应
转载 来自https://www.cnblogs.com/eyed/p/7872521.html HTML5----响应式(自适应)网页设计 现在,很多项目都需要做响应式或者自适应的来适应 ...
- Js调用Android回调处理
通常在混合app中经常会使用js调用native的方法,一般是: window.nativeApp.call(XXX); 直接调用native方法,对于简单的处理倒是可以,如果需要回调呢?期待的方式是 ...
- jenkins 流水线学习
最佳实践: https://www.cnblogs.com/itech/p/5678643.html 一些样例 https://jenkins.io/doc/pipeline/examples/ gi ...