前言
就最近Google进行了SDK的更新,同样的提供了部分框架的更新以及合入了部分的框架。这里的Espresso就是其中的一个。详细的我们可以查看这次support library的更新:http://developer.android.com/tools/testing-support-library/index.html
既然Espresso被合入的话,那么是不是和以前的使用方式不同呢,就进行一下新的尝试。不过令人高兴的是在code.google上面2天前也对于Espresso2.0进行了相对应的doc更新,真的非常贴心,详细可见:https://code.google.com/p/android-test-kit/wiki/EspressoSetupInstructions
例子的代码见:https://github.com/monkeytest15/Espresso2.0-demo/tree/master
这里也再一张2.0更新的总结图
尝试
那么我们接下来同样的使用AS新建一个Gradle的工程,在这个例子中我起名是Espress_V2
--------我是分割线君--------
详细设置如下
App目录下的build.gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.monkey.espresso_v2"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions{
exclude 'LICENSE.txt'
}
}
dependencies {
// App's dependencies, including test
compile 'com.android.support:support-annotations:21.0.3'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
//Espresso Testing-only dependencies
androidTestCompile files('libs/espresso-1.1-bundled.jar')
androidTestCompile files('libs/testrunner-1.1*.jar')
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.3.1'
}
这里要注意的是新的这个testrunner的更新,否则会报出各种错误,而且这个设置的确和以前不同。android.support.test.runner.AndroidJUnitRunner
test class的编写
package com.example.monkey.espresso_v2;
import android.test.ActivityInstrumentationTestCase2;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import com.robotium.solo.Solo;
/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ActivityInstrumentationTestCase2<MainActivity> {
Solo solo;
public ApplicationTest() {
super(MainActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}
public void testHelloWorld() {
String TextViewString = getActivity().getString(R.string.hello_world);
onView(withText(TextViewString)).check(matches(isDisplayed()));
}
}
这里可以看出来已经可以直接引用SDK中的包了。
注意点
第一个就是我上面提到的TestRunner的更新
第二个就是如下的设置
后记
AS其实还是非常贴心的,尤其在测试方面。来一张直接通过AS进行执行测试的结果图:
AS也支持结果的report输出,包括各种我们需要的格式,多贴心。
另外最后我也通过了终端的方式进行了再次的测试,如下结果(这个也是自动化必须的),同时我们的报告可以在这个路径下找到
~/app/build/outputs/reports。