声明:本系列文章是对 Android Testing Support Library官方文档的翻译,水平有限,欢迎批评指正。
本指南涵盖了使用 SDK Manager 安装 Espresso 和使用 Gradle 构建 Espresso 测试两部分内容。推荐使用 Android Studio。
为了避免花屏,我们强烈建议在虚拟机或真实设备上测试时关闭系统动画。
build.gradle
文件。这通常不是顶级 build.gradle
,而是 app/build.gradle
。androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test:runner:0.5'
android.defaultConfig
下添加下面的代码:testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22"
defaultConfig {
applicationId "com.my.awesome.app"
minSdkVersion 10
targetSdkVersion 22.0.1
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
// App's dependencies, including test
compile 'com.android.support:support-annotations:22.2.0'
// Testing-only dependencies
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
}
为了确保每一个新发布的版本正常工作,test runner 会收集分析数据。具体而言,每次调用它都会上传待测应用包名的一个 hash 值。这可以使我们在 Espresso 特性包的数量以及它的体积之间做出权衡。
如果你不希望上传此类数据,可以通过给 test runner 传入 disableAnalytics “true”
来禁止(参考 如何传入自定义参数)
Android Studio 默认在 src/androidTest/java/com.example.package/
中创建测试。
使用 Rules 创建的 JUnit4 测试实例:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class HelloWorldEspressoTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class);
@Test
public void listGoesOverTheFold() {
onView(withText("Hello world!")).check(matches(isDisplayed()));
}
}
创建测试配置
在 Android Studio 中:
android.support.test.runner.AndroidJUnitRunner
执行这个新创建的配置
执行 ./gradlew connectedAndroidTest