Android之单元测试
本文地址:http://blog.csdn.net/qq_16628781/article/details/61202111
知识点:
1、单元测试;
常见测试方法有以下几个:
黑盒测试: 是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。
白盒测试: 又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
单元测试: 又称模块测试,是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。
功能测试: 根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。
压力测试: 主体向被观察者布置一定量任务和作业,借以观察个体完成任务的行为。
集成测试: 是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口
备注:黑盒测试,不看代码结构,从用户的角度测试功能,例如玩某一款游戏来测试。白盒测试:通过代码测试功能。
来说说Android中的单元测试,在建立项目的时候,IDE默认给我们建立了两个测试的文件,一个是可以在IDE里头直接测试的,另外一个是可以要运行在Android手机上面的。如下图所示
其中AndroidTest是需要在Android手机上运行才能跑的。
而test则是可以运行在IDE中的。
下面我们来看看这两个文件
首先是ExampleInsrumentedTest类
/*** Instrumentation test, which will execute on an Android device.* 运行在Android设备上的单元测试** @see <a href="http://d.android.com/tools/testing">Testing documentation</a>*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {@Testpublic void useAppContext() throws Exception {// Context of the app under test.Context appContext = InstrumentationRegistry.getTargetContext();assertEquals("com.yaojt", appContext.getPackageName());}@Testpublic void addTest() {HomeActivity homeActivity = new HomeActivity();int count = homeActivity.add(1, 2);System.out.println("count on dvice: " + count);}
}
ExampleUnitTest类:
/*** Example local unit test, which will execute on the development machine (host).* 运行在开发机器上的本地单元测试** @see <a href="http://d.android.com/tools/testing">Testing documentation</a>*/
public class ExampleUnitTest {@Testpublic void addition_isCorrect() throws Exception {assertEquals(4, 2 + 2);}//@Test是修饰符,必须的@Testpublic void addTest() {HomeActivity homeActivity = new HomeActivity();int count = homeActivity.add(1, 2);System.out.println("count: " + count);}}
我们运行IDE里头可以跑得单元测试,效果如图所示:
这里有一个小小的错误,就是当我引用我自己写的log类的时候,会出现这个问题:
java.lang.RuntimeException: Method i in android.util.Log not mocked. See http://g.co/androidstudio/not-mocked for details.at android.util.Log.i(Log.java)at com.yaojt.utils.LogUtil.logInfo(LogUtil.java:21)at com.yaojt.ExampleUnitTest.addTest(ExampleUnitTest.java:27)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:497)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)at org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:497)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
因为我使用了
LogUtil.logInfo("count");//自定义方法
我看了下,大概是说,这里不允许使用Android里头的类,因为本地单元测试使用的是Java。
Android之单元测试相关推荐
- android studio单元测试插件,Android Studio单元测试插件下载
Android Studio单元测试插件是一款可以解决testcompile依赖问题的Android Studio插件,可以帮助用户们在Android Studio进行单元测试,有需要的朋友就来IT猫 ...
- 关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决。
关于Android Studio单元测试中"Method d in android.util.Log not mocked."问题的解决. 点开链接 这就是解决方案.(这主要是由于 ...
- Android:单元测试
前言 对于Android的单元测试一直有些弄不明白,虽然要进行单元测试并不复杂,但是其中的关系好像有点复杂,包括怎样在Eclipse进行单元测试,又怎样在Android Studio进行单元测试,怎样 ...
- Android之单元测试及数据库操作,android的单元测试
1.新建android Test project 2. 选择针对测试的项目 3.新建类继承AndroidTestCase即可: package com.howlaa.sms.test; import ...
- 【android】AS中使用Junit单元测试和Android JUnit 单元测试
AS中使用Junit单元测试和Android JUnit 单元测试 在AndroidStudio中使用单元测试 1. 前言 在Android开发中,如果对一个简单的功能,每次修改代码都重新运行到设备中 ...
- android android studio单元测试实例
编写单元测试的具体步骤: A.先创建一个android要测试的逻辑类 B.编写一个测试类 C.清单文件的配置 <!-- 指定测试框架运行的指令集,告诉模拟器测试我们的应用程序,指定包名 --&g ...
- Android单元测试读写文件,Android Studio单元测试:读取数据(输入)文件
根据android-gradle-plugin版本: 1.版本1.5和更高版本: 只需把json文件到src / test / resources / test.json并引用它 classLoade ...
- Android添加单元测试的方法与步骤
一.修改配置文件AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <man ...
- android studio 单元测试用法,基于Android Studio2.1.1 进行单元测试完整教程
我的AndroidStudio 我的AndroidStudio是2.1.1版本,但是进行单元测试应该很早的版本就可以了,至少可以追溯到1.0 注意事项 当你google查找AndroidStudio单 ...
- Android:单元测试InstrumentationTestRunner
报错:[2018-11-25 13:41:08 - Day03_单元测试] Day03_单元测试 does not specify a android.test.InstrumentationTest ...
最新文章
- Docker最全教程之使用Docker搭建Java开发环境
- 数学学习的心理——关于数学中的挫败的反思及若干启示
- Django:ORM基本操作-CRUD,管理器对象objects,----->新增
- Tensorflow学习笔记(四)
- SUSHI区块奖励将根据此前提案在3月降至每区块40枚
- 关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
- 计算机英语评价,关于计算机专业英文自我评价
- 编译android 7.1 jdk版本,ubuntu14.04 安装 open-jdk-1.8,下载编译 android nougat 7.1.1
- 【渝粤教育】国家开放大学2018年春季 0359-21T会计学原理 参考试题
- 习题4-6 莫尔斯代码(Morse Mismatches,ACM/ICPC World Finals 1997,UVa508)
- 光纤猫上的LOS灯红色闪烁解决方法
- AlertDialog点击确定必定会dismiss问题
- 行测判断推理部分之图形推理(位置)
- 计算机dns怎么设置方法,电脑的dns怎么设置具体方法
- 大专生三面蚂蚁金服,Java中高级核心知识全面解析(7)
- Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。
- NEON----ARM通用 SIMD 引擎
- iacr crypto 级别_上证综指率先确认日线级别下跌
- 乔布斯在斯坦福大学的演讲视频
- 老男孩Linux运维培训计划书
热门文章
- 计算机基础知识(基础入门小白专属)九
- 任务一 CC++文件实训
- SQL数据库损坏及恢复分析
- 在番看付费美女直播,不想花钱,我这样做了!
- charlesfiddler安卓手机安装系统级ca证书抓取https请求信息
- STM32 —— STM32 的串口通信
- 凯撒(caesar)密码加解密方法
- IDEA 离线安装插件
- Python Flask No.1_简介
- .NET报错:所生成项目的处理器框架“MSIL”与引用“xxx”的处理器架构“AMD64”不匹配