您的位置:首页 > 移动开发

Espresso学习笔记一:Espresso的安装与配置

2015-06-16 15:02 344 查看
一.Espresso的安装

因为Espresso包含在Android Support Repository中,所以打开SDK manager,确保在Extras下的Android
Support Repository已被安装,安装后Espresso即可使用。

二.Espresso的配置

打开app下的build.gradle文件

1.在dependencies字段下添加以下内容:

<span style="font-size:12px;">    androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.android.support.test:rules:0.3'

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'</span>


注意:是app/build.gradle文件,而不是顶层的build.gradle文件。

2.在android.defaultConfig字段下设置instrumentation
runner:

<span style="font-size:12px;">    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"</span>


以下是build.gradle文件的示例:

<span style="font-size:12px;">apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
applicationId "com.example.tiger_miao.androidtestkitexecise"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

packagingOptions {
exclude 'LICENSE.txt'
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile 'com.android.support:appcompat-v7:22.2.0'

compile 'org.roboguice:roboguice:3.+'
provided 'org.roboguice:roboblender:3.+'

// Testing-only dependencies
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.android.support.test:rules:0.3'

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
}</span>


三.设置测试的运行环境

在开发者选项中关闭以下三个动画选项:



四.Espresso测试示例:

<span style="font-size:12px;">@RunWith(AndroidJUnit4.class)
@LargeTest
public class HelloWorldEspressoTest extends ActivityInstrumentationTestCase2<MainActivity> {

public HelloWorldEspressoTest() {
super(MainActivity.class);
}

@Before
@Override
public void setUp() throws Exception {
super.setUp();

injectInstrumentation(InstrumentationRegistry.getInstrumentation());

getActivity();
}

@Test
public void testListGoesOverTheFold() {
onView(withText("Hello world!")).check(matches(isDisplayed()));
}

@After
@Override
public void tearDown() throws Exception {
super.tearDown();
}
}</span>
<pre name="code" class="java"><span style="font-size:12px;">@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()));
}
}</span>


以上两段代码都使用了AndroidJUnitRunner(@RunWith(AndroidJUnit4.class)),这是一个支持Android的新的test runner,它是Android Support Test Library的一部分,用来取代InstrumentationTestRunner,增加了一些新的特性,它支持JUnit4和JUnit3,而后者只支持JUnit3。使用AndroidJUnitRunner,需要使用InstrumentationRegistry手动注入Instrumentation。

第二个测试还使用了ActivityTestRule,这个rule为单个Activity提供了功能测试,被测试的Activity会在每个标记为@Test和@Before的方法调用之前被自动加载完成,因此不需要手动调用getActivity方法。但是如果需要在Activity启动之前进行一些设置的话(比如:在Activity启动前注入测试数据),这种方法就不太合适了。
<span style="font-family: Arial, Helvetica, sans-serif; color: rgba(0, 0, 0, 0.870588); line-height: 32px; background-color: rgb(255, 255, 255);">五.运行测试</span>
在AndroidStudio的Terminal中运行:

./gradlew connectedCheck
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息