本文地址: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之单元测试相关推荐

  1. android studio单元测试插件,Android Studio单元测试插件下载

    Android Studio单元测试插件是一款可以解决testcompile依赖问题的Android Studio插件,可以帮助用户们在Android Studio进行单元测试,有需要的朋友就来IT猫 ...

  2. 关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决。

    关于Android Studio单元测试中"Method d in android.util.Log not mocked."问题的解决. 点开链接 这就是解决方案.(这主要是由于 ...

  3. Android:单元测试

    前言 对于Android的单元测试一直有些弄不明白,虽然要进行单元测试并不复杂,但是其中的关系好像有点复杂,包括怎样在Eclipse进行单元测试,又怎样在Android Studio进行单元测试,怎样 ...

  4. Android之单元测试及数据库操作,android的单元测试

    1.新建android Test project 2. 选择针对测试的项目 3.新建类继承AndroidTestCase即可: package com.howlaa.sms.test; import ...

  5. 【android】AS中使用Junit单元测试和Android JUnit 单元测试

    AS中使用Junit单元测试和Android JUnit 单元测试 在AndroidStudio中使用单元测试 1. 前言 在Android开发中,如果对一个简单的功能,每次修改代码都重新运行到设备中 ...

  6. android android studio单元测试实例

    编写单元测试的具体步骤: A.先创建一个android要测试的逻辑类 B.编写一个测试类 C.清单文件的配置 <!-- 指定测试框架运行的指令集,告诉模拟器测试我们的应用程序,指定包名 --&g ...

  7. Android单元测试读写文件,Android Studio单元测试:读取数据(输入)文件

    根据android-gradle-plugin版本: 1.版本1.5和更高版本: 只需把json文件到src / test / resources / test.json并引用它 classLoade ...

  8. Android添加单元测试的方法与步骤

    一.修改配置文件AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <man ...

  9. android studio 单元测试用法,基于Android Studio2.1.1 进行单元测试完整教程

    我的AndroidStudio 我的AndroidStudio是2.1.1版本,但是进行单元测试应该很早的版本就可以了,至少可以追溯到1.0 注意事项 当你google查找AndroidStudio单 ...

  10. Android:单元测试InstrumentationTestRunner

    报错:[2018-11-25 13:41:08 - Day03_单元测试] Day03_单元测试 does not specify a android.test.InstrumentationTest ...

最新文章

  1. Docker最全教程之使用Docker搭建Java开发环境
  2. 数学学习的心理——关于数学中的挫败的反思及若干启示
  3. Django:ORM基本操作-CRUD,管理器对象objects,----->新增
  4. Tensorflow学习笔记(四)
  5. SUSHI区块奖励将根据此前提案在3月降至每区块40枚
  6. 关于ArcGIS动态图层空间内栅格数据,JS前端显示颜色不正确的解决方案
  7. 计算机英语评价,关于计算机专业英文自我评价
  8. 编译android 7.1 jdk版本,ubuntu14.04 安装 open-jdk-1.8,下载编译 android nougat 7.1.1
  9. 【渝粤教育】国家开放大学2018年春季 0359-21T会计学原理 参考试题
  10. 习题4-6 莫尔斯代码(Morse Mismatches,ACM/ICPC World Finals 1997,UVa508)
  11. 光纤猫上的LOS灯红色闪烁解决方法
  12. AlertDialog点击确定必定会dismiss问题
  13. 行测判断推理部分之图形推理(位置)
  14. 计算机dns怎么设置方法,电脑的dns怎么设置具体方法
  15. 大专生三面蚂蚁金服,Java中高级核心知识全面解析(7)
  16. Eclipse+ GNU ARM Eclipse Plug-in+ Sourcery G++ Lite Edition for ARM+OPENCD+Jlink的开源开发环境。
  17. NEON----ARM通用 SIMD 引擎
  18. iacr crypto 级别_上证综指率先确认日线级别下跌
  19. 乔布斯在斯坦福大学的演讲视频
  20. 老男孩Linux运维培训计划书

热门文章

  1. 计算机基础知识(基础入门小白专属)九
  2. 任务一 CC++文件实训
  3. SQL数据库损坏及恢复分析
  4. 在番看付费美女直播,不想花钱,我这样做了!
  5. charlesfiddler安卓手机安装系统级ca证书抓取https请求信息
  6. STM32 —— STM32 的串口通信
  7. 凯撒(caesar)密码加解密方法
  8. IDEA 离线安装插件
  9. Python Flask No.1_简介
  10. .NET报错:所生成项目的处理器框架“MSIL”与引用“xxx”的处理器架构“AMD64”不匹配