前言
翻译自谷歌官方文档,部分笔记内容加入自己的理解.
Instrumented Tests
Instrumented Test 以apk的形式运行待测app的同一款机器上.系统会在同一个进程中运行待测app和编译出的测试apk.
当你的测试程序需要某些信息(例如宿主app的context上下文环境),或者当它们需要真实的安卓框架组件的时候,可以来构建 Instrumentation Test.使用Instrumentation Test 可以减少编写和维护模拟代码 的工作量,同时如果你需要模拟依赖关系,仍然可以使用 mockito框架.
添加依赖
dependencies {
androidTestCompile 'com.android.support.test:runner:0.4'
// Set this dependency to use JUnit 4 rules
androidTestCompile 'com.android.support.test:rules:0.4'
// Set this dependency to build and run Espresso tests
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
// Set this dependency to build and run UI Automator tests
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
}
将 AndroidJUnitRunner 设置为
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
除了上述的依赖以外,还可以选择添加 HamCrest 这个库,使用这个库可以让你更灵活地来插入断言语句.
创建仪器测试类
创建仪器化的 Junit4测试类,首先需要在测试类的定义前添加 @RunWith 注解,然后需要在 build.gradle 中配置 AndroidJunitRunner 为默认的test runner.
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"s
创建测试集合
为了更好地测试执行你的仪器单元测试,你可以对测试类中的测试集合进行分组并且集中运行这些用例.测试集合可以是嵌套的;测试类中可以包含其它的测试集并且运行测试集中的所有用例.
为了方便,测试集的所属的包名通常以 "suite" 结尾.
测试集的基本格式如下,使用 @Suite.SuiteClass() 这个注解,参数为单独的测试类或测试集.
import com.example.android.testing.mysample.CalculatorAddParameterizedTest;
import com.example.android.testing.mysample.CalculatorInstrumentationTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
// Runs all unit tests.
@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorInstrumentationTest.class,
CalculatorAddParameterizedTest.class})
public class UnitTestSuite {}
网友评论