android 单元测试

android studio 2.0创建一个空android moudle后,

会出现两个test目录,其中一个是Instrument Test,

另一个则是Unit Test

Unit Test 和 Instrument Test 的区别:

在 Android Developer 给出的 Instrument Test 解释如下:

Instrumented unit tests are unit tests that run on physical devices and emulators, instead of the Java Virtual Machine (JVM) on your local machine. You should create instrumented unit tests if your tests need access to instrumentation information (such as the target app’s Context) or if they require the real implementation of an Android framework component (such as a Parcelable or SharedPreferences object). Using instrumented unit tests also helps to reduce the effort required to write and maintain mock code. You are still free to use a mocking framework, if you choose, to simulate any dependency relationships. Instrumented unit tests can take advantage of the Android framework APIs and supporting APIs, such as the Android Testing Support Library。

简单的翻译: Instrumented Unit test 是允许在真机或者模拟器上的,而不是运行在本地环境下的虚拟机中。如果在测试时需要使用 instrumentation information(例如 app Context),或者你需要获取 Android 框架的组件(例如 SharedPrederences),这时候你就可以创建一个 instrumented unit test。使用 Instrumented unit test 可以帮助减少编写模拟环境的代码。当然你也可以使用一些 mock 框架。使用 Instrumented unit test 可以很好的利用 Android framework api 和 supporting API。

在 Android Developer 给出的 Local Unit Tests(Unit Test)解释如下:

If your unit test has no dependencies or only has simple dependencies on Android, you should run your test on a local development machine. This testing approach is efficient because it helps you avoid the overhead of loading the target app and unit test code onto a physical device or emulator every time your test is run. Consequently, the execution time for running your unit test is greatly reduced. With this approach, you normally use a mocking framework, like Mockito, to fulfill any dependency relationships.

简单的翻译:如果你的单元测试不依赖Android环境,那么你需要使用一个本地的单元测试,运行在本地的JVM上,这样的话,就有利于你的测试速度,因为加载物理设备是很耗费时间的。你可以使用类似于 Mockito 这种 Java 测试框架。

简单的总结一下是,这些情况适合用 Instrumented unit test :

  • 测试时需要使用 Android api支持
  • 测试时需要使用 Android 中的组件
  • 测试时需要访问 Android 中的特定环境元素(例如 Context)

其他情况优先考虑使用 Unit Test ,因为它的速度要快很多,效率也要高很多。其次,Instrumented unit test 是基于 Unit Test 的。

Unit Test 环境配置:

dependencies {

  testCompile ‘junit:junit:4.12’

  testCompile “org.mockito:mockito-core:1.9.5”

}

编写测试代码:

配置运行:

运行结果:

tip:需要在测试方法前需要添加 @Test 注解

两个知识点学习:

关于 Junit 4 中注解的使用:

  • @Before 被这个注解的方法会阻塞 @Test 注解方法,在 @Test 注解方法前执行,如果存在多个 @Before 方法,执行顺序随机。这个注解的方法主要用来执行一些测试的设置。
  • @After 被这个注解标志的方法,会在所有的 @Test 方法之后执行,主要用来释放资源的操作
  • @Test 被这个注解标志的方法,就是你的测试方法,一个单元测试类可以有多个测试方法。
  • @Test(timeout=) 带参数的 @Test 注解标签,如果方法在参数时间内没有成功完成,则返回失败。
  • @BeforeClass 被这个标签标注的方法,会在Class第一次加载调用,所以你可以在里面执行一个 static 方法,比如一些 static 方法是很费资源的,例如 JDBC 操作。
  • @AfterClass 对应着 @BeforeClass ,你可以进行一些 static 操作之后的资源释放。

Assert 系列方法的使用: 
Junit 提供了一系列的 Assert 重载方法,提供你把预期结果(Object,long,Arrays 等类型)和实际结果进行比较。同时还有一个 AssertThat()方法,提供了一个失败 Message 的输出

Instrumented unit 环境配置:

android {    defaultConfig {        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }}
dependencies {    androidTestCompile ‘com.android.support:support-annotations:23.0.1‘    androidTestCompile ‘com.android.support.test:runner:0.4.1‘    androidTestCompile ‘com.android.support.test:rules:0.4.1‘    // Optional -- Hamcrest library    androidTestCompile ‘org.hamcrest:hamcrest-library:1.3‘    // Optional -- UI testing with Espresso    androidTestCompile ‘com.android.support.test.espresso:espresso-core:2.2.1‘    // Optional -- UI testing with UI Automator    androidTestCompile ‘com.android.support.test.uiautomator:uiautomator-v18:2.1.1‘}
运行配置:



运行结果:


官方链接:

http://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html#setup

Demo地址:

https://github.com/googlesamples/android-testing/tree/master/unit/BasicUnitAndroidTest

时间: 2024-12-15 11:14:34

android 单元测试的相关文章

android单元测试

http://blog.csdn.net/duancanmeng/article/details/7458851 第一步:在AndroidManifest.xml中加入如下两段代码: 代码一 <uses-library android:name="android.test.runner"/>代表把第三方中的依赖库引入进来 代码二 <instrumentation android:name="android.test.InstrumentationTestRu

android单元测试AndroidTestCase

在实际开发中,开发android软件的过程需要不断的进行测试.而是用Junit测试框架,则是正规android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 比如,若想验证一个自定义类中的某个方法时,则可以在单元测试中创建这个类对象,并给定适合参数调用该类方法. Android单元测试具体方法如下: (1).创建一个类继承AndroidTestCase,该类为一个单元测试类. (2).在AndroidMainfest中声明instrumentation分支.

Android单元测试时如何使用log查看输出结果

Android单元测试与日志输出:http://blog.csdn.net/xy849288321/article/details/7054790

Android单元测试初探——Instrumentation(转载)

学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次.这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧! 首先,我们来了解一下android的测试类的层次结构: 可以看出android中的测试方法主要有AndroidTextCase和InstrumentationTextCase.在这篇文章中,我将介绍Instrumentation这种测试方法,那么什么是Instrumentatio

如何进行Android单元测试

如何进行Android单元测试 Menifest.xml中加入: <application>中加入: <uses-library android:name="android.test.runner" /> <application>外面加入: <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" /> <instrumenta

Android单元测试,使用ThreadingTest进行全新体验

1. 背景 长期以来,软件测试工程师都在如何提高软件系统质量和如何提高测试效率的道路上艰难地探索,但始终没有一款性能全面的测试工具可以满足需求. ThreadingTest智能型测试工具系列一期,是基于程序源代码的白盒测试工具.采取前端分析器和后端结果分析分离的技术路线,实现对多种语言的编译器级分析和多维度测试. ThreadingTest通过一系列自动.高效.可视化技术,使软件维护与开发效率加倍.成本减半.系统软件质量提高几个数量级. ThreadingTest采用离线分析操作,即使电脑脱离互

Android 单元测试学习计划

网上查了一下Android单元测试相关的知识点,总结了一个学习步骤: 1. 什么是单元测试2. 单元测试正反面: 2.1. 重要性 2.2. 缺陷 2.3. 策略3. 单元测试的基础知识: 3.1. 单元测试分类 3.2. 单元测试术语 3.3. 单元测试工具,框架4. 什么是junit5. 运行简单的Android单元测试简单,总结建立测试的流程6. 运行简单的功能测试,ui测试,单元测试7. Android单元测试类的层次结构8. 如何深入了解单元测试: 经验,技巧,总结

Android单元测试实践

为什么要写单元测试 首先要介绍为什么蘑菇街支付金融这边会采用单元测试的实践.说起来比较巧,刚开始的时候,只是我一个人会写单元测试.后来老板们知道了,觉得这是件 很有价值的事情,于是就叫我负责我们组的单元测试这件事情.就这样慢慢的,单元测试这件事情就成了我们这边的正常实践了.再后来,在公司层面也开始有一定 的推广. 要说为什么要写单元测试的话,我相信大部分人都能承认.也能理解单元测试在保证代码质量,防止bug或尽早发现bug这方面的作用,这可能 是大家觉得单元测试最大的作用.然而我觉得,除了这方面

android单元测试 activity跳转 以及 input 输入后 测试

Android junit实现多个Activity跳转测试 分类: Android Junit测试2011-11-14 16:49 1601人阅读 评论(2) 收藏 举报 androidjunitlayout测试单元测试exception 测试相关资源 让开发自动化: 用 Eclipse 插件提高代码质量http://www.ibm.com/developerworks/cn/java/j-ap01117/index.html 代码测试覆盖率介绍:http://www.cnblogs.com/c

gradle 编译环境下进行android单元测试

====== android 单元测试介绍 ====== JUnit是一个开源的java单元测试框架,android的测试套件是基于JUnit 3的(不完全兼容JUnit 4),Junit4只需简单了解即可,可以使用普通的junit来进行测试,推荐使用android的Junit测试框架进行高效全面的进行测试. ====== Android 单元测试框架UML ====== {{:dolphin_news:share:androidjunituml.png?300 |}} ====== eclip