标签:
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 :
其他情况优先考虑使用 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 中注解的使用:
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
标签:
原文地址:http://www.cnblogs.com/lzl-sml/p/5479135.html