Espresso是Google自家的一个UI测试框架,虽然没有推出正式版,但是目前已经是可用的了。优点是语法非常简单,缺点还是只能支持本应用内部测试。
如果你只是想要一个简单的UI自动化测试框架,Espresso是个不错的选择。
其他网友的Espresso简单介绍
Gradle配置
因为是自家的所以配置非常简单。只需要在build.gradle
文件进行配置即可。配置文件如下,注意的地方都标注了。配置好之后Sync Projct之后就可以使用了。
../app/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.example.espressotest"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
//set test runer
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
packagingOptions{
exclude 'LICENSE.txt'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
// Testing-only dependencies
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
}
测试实例
测试类位置为..app/src/androidTest/java/packagename
package com.example.espressotest;
import static android.support.test.espresso.Espresso.*;
import static android.support.test.espresso.matcher.ViewMatchers.*;
import static android.support.test.espresso.assertion.ViewAssertions.*;
import android.support.test.espresso.action.ViewActions;
import android.test.ActivityInstrumentationTestCase2;
/**
* onView(),matches()等方法都是静态,所以这里为了方便使用使用静态导入
*/
public class TextTest extends ActivityInstrumentationTestCase2<MainActivity> {
private static String TAG = "TextTest";
private Activity activity;
public TextTest() {
super(MainActivity.class);
}
public TextTest(Class<MainActivity> activityClass) {
super(activityClass);
}
@Override
protected void setUp() throws Exception {
super.setUp();
// 准备好测试的Activity
// activity = getActivity();
getActivity();
}
// 测试方法使用test开头
public void test_text() {
String hello = getActivity().getResources().getString(R.string.hello_world);
// 测试控件显示内容
onView(withId(R.id.textView)).check(matches(withText(hello)));
}
public void test_showing() {
// 测试控件隐藏显示
onView(withId(R.id.textView)).check(matches(isDisplayed()));
}
public void test_enable() {
// 测试控件是否可用
onView(withId(R.id.textView)).check(matches(isEnabled()));
}
public void test_DilogShowing() {
// 通过对话框控件来测试对话框是否显示
onView(withId(R.id.textView)).perform(ViewActions.click());
// 也可以通过内容来对应控件,当然不能有内容相同的冲突
onView(withText("dialog")).check(matches(isDisplayed()));
}
}