在AndroidStudio中使用单元测试
1. 前言
2. 添加单元测试支持
2.1 添加单元测试依赖包
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'
- testImplementation-引入的依赖是java unit单元测试,是运行在当前电脑的jvm上的单元测试;
- androidTestImplementation-引入的依赖是Android单元测试,是运行在Android环境的单元测试。
2.2 添加测试代码目录
- androidTest/java(Android单元测试,运行在当前电脑的jvm上的单元测试,执行测试的时候需要Android连接设备,速度比较慢,适合需要调用Android api的单元测试)
- test/java(JUnit单元测试,用来放不需要Android依赖的单元测试类,运行在当前电脑的jvm上的单元测试,速度快,适合只是对java代码功能进行单元测试)
2 添加单元测试类
2.1 手动编写单元测试类
2.1.1 androidTest测试类
package com.xiaoying.untitestdemo; import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.test.InstrumentationRegistry; import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.assertEquals; /**
* Created by yinglovezhuzhu@gmail.com on 2018/5/13.
*/
public class MainActivityTest { private Context mTargetContext; @Before
public void setUp() throws Exception {
mTargetContext = InstrumentationRegistry.getTargetContext();
} @Test
public void onCreate() {
try {
ApplicationInfo applicationInfo = mTargetContext.getPackageManager().getApplicationInfo(mTargetContext.getPackageName(), PackageManager.GET_META_DATA);
Bundle metaData = applicationInfo.metaData;
String data = metaData.getString("com.xiaoying.TEST"); assertEquals("", data);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
2.1.2 test测试类
package com.xiaoying.untitestdemo; import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.*; /**
* Created by yinglovezhuzhu@gmail.com on 2018/5/13.
*/
public class UtilsTest { @Before
public void setUp() throws Exception { } @Test
public void isEmpty() { assertEquals(true, Utils.isEmpty(""));
}
}
- 上面的示例代码中可以直接使用assertEquals,是因为使用了静态import方法引入了相应的包(import static org.junit.Assert.*;)
- 根据测试的功能合理使用androidTest和test,提高单元测试效率。
2.2 自动生成测试类和测试方法
3. 运行单元测试
3.1 运行单个测试方法
3.2 批量运行测试方法(有些情况下可能会无法实现)
在AndroidStudio中使用单元测试的更多相关文章
- Visual Studio中UnitTesting单元测试模板代码生成
在软件研发过程中,单元测试的重要性直接影响软件质量.经验表明一个尽责的单元测试方法将会在软件开发的某个阶段发现很多的Bug,并且修改它们的成本也很低.在软件开发的后期阶段,Bug的发 ...
- AndroidStudio中activity实现去掉标题栏
1.在代码中实现 this.requestWindowFeature(Window.FEATURE_NO_TITLE) 这段代码需要放在setContentView()前面 2.设置在Manifest ...
- 真正意义上的spring环境中的单元测试方案spring-test与mokito完美结合
真正意义上的spring环境中的单元测试方案spring-test与mokito完美结合 博客分类: java 测试 单元测试SpringCC++C# 一.要解决的问题: spring环境中 ...
- 在Android中进行单元测试遇到的问题
问题1.Cannot connect to VM socket closed 在使用JUnit进行测试的时候,遇到这个问题.网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还 ...
- androidStudio中如何加载字体资源?
在android中字体的格式总是不能尽善尽美的显示出来 , 于是要求我们使用一些有美感的字体,加载的方式(就像HTML的字体一样),我们需要通过加载字体的方式来使用android中不曾提供的字体; ...
- AndroidStudio中 R文件缺失的办法
AndroidStudio中 R文件缺失 找不到R文件的原因有如下两类: 1:IDE或代码问题,非个人原因: 2:个人误操作导致IDE不予提示R文件: 下面是解决办法: 第一种 ①首先确保资源文件是否 ...
- Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)
前提条件 : 1. 安装 Git 客户端 下载链接 2. 有 GitHub 账号 (假设你已经有了一些git基础, 如果还一点都不会, 请去找其他加成学习) AndroidStudio项目发布到Git ...
- 在Android Studio中进行单元测试和UI测试
本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...
- Visual Studio 中的单元测试 UNIT TEST
原文:Visual Studio 中的单元测试 UNIT TEST 注:本文系作者原创,可随意转载,但请注明出处.如实在不愿注明可留空,强烈反对更改原创出处.TDD(Test-Driven Devel ...
随机推荐
- 解决chrome没有允许添加flash的问题
有时候测试的时候,需要开启flash 但是Chrome一般都是自己弹出来的 现在弹不出来怎么办 自己添加? chrome://settings/content/flash 对不起 根本没有的 怎么解 ...
- adb实操
一.命令 adb connect IP:5555 adb disconnect IP:5555 adb remount adb install 安装包的绝对路径 二.获取logcat信息 1.制作文件 ...
- css div嵌套层中button的margin-top不起作用解决方法
首先声明本人资质尚浅,本文只用于个人总结.如有错误,欢迎指正.共同提高. --------------------------------------------------------------- ...
- C#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)
1.抽象类 抽象类关键词 abstract (抽象) override (重写) 在父集中用 abstract 表示抽象类,抽象方法,在子集中用 override 改写 抽 ...
- 03.Zabbix应用服务监控
一.Zabbix监控Nginx 1.1 实验环境 服务器系统 角色 IP CentOS 7.4 x86_64 Zabbix-Server 192.168.90.10 CentOS 7.4 x86_64 ...
- linux(1)
Linux/Unix操作系统 OS 系统软件 用户.应用程序 <-OS-> 硬件:CPU Memory Disk 外设管理软件测试方向: 被测系统主要的操作系统,监控系统资源.使用系统常用 ...
- 【转】GO语言map类型interface{}转换踩坑小记
原文:https://www.az1314.cn/art/69 ------------------------------------------ mapA := make([string]inte ...
- 关于WebAssembly
一.WebAssembly是什么? WebAssembly(缩写为Wasm)是基于堆栈的虚拟机的二进制指令格式.Wasm被设计为一个可移植的目标,用于编译C / C ++ / Rust等高级语言,支持 ...
- [ZJOI2019]语言——树剖+树上差分+线段树合并
原题链接戳这儿 SOLUTION 考虑一种非常\(naive\)的统计方法,就是对于每一个点\(u\),我们维护它能到达的点集\(S_u\),最后答案就是\(\frac{\sum\limits_{i= ...
- PHP实现省市区关键词搜索邮编
前两天做了一个项目, 其中有一个需求是根据用户输入的关键词查询邮编. 最开始设计的数据库结构是省市区分为三个字段, province, city, area, 但是在写代码实现的过程中发现, 用户只输 ...