博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Espresso(-第一个项目)
阅读量:6131 次
发布时间:2019-06-21

本文共 6955 字,大约阅读时间需要 23 分钟。

hot3.png

本文针对Android studio

一、创建一个项目

       像平常一样直接创建一个android项目即可。

1、在app/build.gradle文件中如下配置

apply plugin: 'com.android.application'android {    compileSdkVersion 23    buildToolsVersion "23.0.2"    defaultConfig {        applicationId "com.collection.self.com.espressotest"        minSdkVersion 9        targetSdkVersion 23        versionCode 1        versionName "1.0"        //-----Espresso中要求添加的部分(必选项)        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    packagingOptions {        exclude 'META-INF/maven/com.google.guava/guava/pom.properties'        exclude 'META-INF/maven/com.google.guava/guava/pom.xml'    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])//    testCompile 'junit:junit:4.12'----这个一定要删除,否则AndroidJUnit4无法下载下来    androidTestCompile 'com.android.support:support-annotations:23.1.1'    compile 'com.android.support:appcompat-v7:23.1.1'// Android JUnit Runner-----Espresso中要求添加的部分(必选项)    androidTestCompile 'com.android.support.test:runner:0.4.1'    // JUnit4 Rules-----Espresso中要求添加的部分(必选项)    androidTestCompile 'com.android.support.test:rules:0.4.1'    // Espresso core-----Espresso中要求添加的部分(必选项)    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'//    // Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource//    //-----Espresso中要求添加的部分(可选项)//    androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.1'//    // Espresso-web for WebView support-----Espresso中要求添加的部分(可选项)//    androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.1'//    // Espresso-idling-resource for synchronization with background jobs-----Espresso中要求添加的部分(可选项)//    androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:2.2.1'}

 

2、MainActivity代码如下

 package com.collection.self.com.espressotest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public void sayHello(View view){        TextView textView = (TextView)findViewById(R.id.textView);        EditText editText = (EditText)findViewById(R.id.editText);        textView.setText("Hello,"+editText.getText().toString()+"!");    }}

 

3、activity_main.xml文件配置如下

    
    
    

 

4、测试是否可以正确运行

    点击运行按钮测试程序是否可以正常运行

171343_W6ws_2253892.png

二、添加Espresso的测试代码

1、目前的文件结构如下:

171524_QCcF_2253892.png

2、新建对应的测试文件:

在app/src/androidTest/项目对应的packageName/此目录中新建一个类。目前用到的类的名字为:MainActivityInstrumentationTest.java

其中具体的代码如下:

 package com.collection.self.com.espressotest;import android.support.test.rule.ActivityTestRule;import android.support.test.runner.AndroidJUnit4;import android.test.suitebuilder.annotation.LargeTest;import org.junit.Rule;import org.junit.Test;import org.junit.runner.RunWith;import static android.support.test.espresso.Espresso.onView;import static android.support.test.espresso.action.ViewActions.click;import static android.support.test.espresso.action.ViewActions.closeSoftKeyboard;import static android.support.test.espresso.action.ViewActions.typeText;import static android.support.test.espresso.assertion.ViewAssertions.matches;import static android.support.test.espresso.matcher.ViewMatchers.withId;import static android.support.test.espresso.matcher.ViewMatchers.withText;/** * Created by jane on 2016/2/19. */@RunWith(AndroidJUnit4.class)@LargeTestpublic class MainActivityInstrumentationTest {    private static final String STRING_TO_BE_TYPED = "Peter";    @Rule    public ActivityTestRule
 mActivityRule = new ActivityTestRule<>(            MainActivity.class);    @Test    public void sayHello(){        onView(withId(R.id.editText)).perform(typeText(STRING_TO_BE_TYPED), closeSoftKeyboard()); //line 1        onView(withText("Say hello!")).perform(click()); //line 2        String expectedText = "Hello, " + STRING_TO_BE_TYPED + "!";        onView(withId(R.id.textView)).check(matches(withText(expectedText))); //line 3    }}

3、运行测试文件

a、对于测试机的设置

关闭测试机三个选项。具体操作步骤如下:

On your device, under Settings->Developer options disable the following 3 settings:

  • Window animation scale

  • Transition animation scale

  • Animator duration scale

b、运行测试文件

在MainActivityInstrumentationTest.java中右键点击,在弹出的菜单中选择Run MainActivityInstrume。

如下图所示:

172521_WHZD_2253892.png

c、测试结果

175752_hDBr_2253892.png

三、遇到的问题解决方法

 【报错内容】

java.lang.NoClassDefFoundError: com.collection.self.com.espressotest.MainActivityat com.collection.self.com.espressotest.MainActivityInstrumentationTest.
(MainActivityInstrumentationTest.java:41)at java.lang.reflect.Constructor.constructNative(Native Method)at java.lang.reflect.Constructor.newInstance(Constructor.java:417)at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:217)at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)at org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org.junit.runners.Suite.runChild(Suite.java:128)at org.junit.runners.Suite.runChild(Suite.java:27)at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)at org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at org.junit.runner.JUnitCore.run(JUnitCore.java:115)at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:54)at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:240)at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1667)

 

 【解决方案】

        主要原因是 app/build.gradle配置文件中有多余的配置选项导致的。所以只需要将不需要的Espresso配置文件删除掉就可以了。

        最后的结果见上面的build.gradle的配置文件

 

 

 

参考地址:

转载于:https://my.oschina.net/u/2253892/blog/617801

你可能感兴趣的文章
分享:深度学习(Deep Learning)算法简介
查看>>
CDE: Lightweight application virtualization for Linux
查看>>
高清精美壁纸:2013年3月桌面日历壁纸免费下载
查看>>
分享:常见gcc编译警告整理
查看>>
分享:【原创】服务器开发之 Daemon 和 Keepalive
查看>>
混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...
查看>>
【SAS NOTES】sas对中文的支持
查看>>
甲骨文向IBM宣战:推出史上最快服务器
查看>>
hdu 1723
查看>>
XML声明
查看>>
hdu 2377
查看>>
[书目20130415]实用IT项目管理
查看>>
ibatis的联合查询详解
查看>>
SQL点滴33—SQL中的字符串操作
查看>>
在Flex中使用HTTPService传递参数
查看>>
Console-算法[for]-打印出杨辉三角形
查看>>
经典网页设计:30个创意的 CSS 应用案例
查看>>
苏教版国标本小学语文第一册汉字笔画
查看>>
在PostgreSQL中,如何模拟Oracle的hint效果
查看>>
SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>
查看>>