zoukankan      html  css  js  c++  java
  • 使用Espresso测试记录

    准备工作

    • 建立测试项目
    • 添加测试依赖
    • 编写Espresso测试
    • 运行测试并检查测试结果

    建立测试项目

    使用Android Studio建立测试项目,Activity模版使用 LoginActivity,AS会自动生成一个LoginActivity

    添加Espresso依赖

        androidTestCompile 'com.android.support:support-annotations:23.0.1'
        androidTestCompile 'com.android.support.test:runner:0.4.1'
        androidTestCompile 'com.android.support.test:rules:0.4.1'
        androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
        androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    
    

    指定TestRunner

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

    编写测试

    这里测试上面的自动建立的LoginActivity。在src/androidTest/com/lw/espresso/ui目录下建立TestLoginActivity

    @RunWith(AndroidJUnit4.class)
    @MediumTest()
    public class TestLoginActivity {
    
        @Rule
        public ActivityTestRule<LoginActivity> rule = new ActivityTestRule<>(LoginActivity.class);
    
        @Test
        public void testLogin(){
             String userName = "123@123.com";
            String pwd = "123456";
    
            /*
                1. 首先找到输入Email的EditText
                2. 输入userName
                3. 检查不为空
             */
            ViewInteraction emailView = Espresso.onView(ViewMatchers.withId(R.id.email))
                    .perform(ViewActions.typeText(userName))
                    .perform(ViewActions.closeSoftKeyboard())
                    .check(ViewAssertions.matches(ViewMatchers.withText(Matchers.not(Matchers.isEmptyOrNullString()))));
    
    
            ViewInteraction pwdView = Espresso.onView(ViewMatchers.withId(R.id.password))
                    .perform(ViewActions.typeText(pwd))
                    .perform(ViewActions.closeSoftKeyboard())
                    .check(ViewAssertions.matches(ViewMatchers.withText(Matchers.not(Matchers.isEmptyOrNullString()))));
    
    
            Espresso.onView(ViewMatchers.withId(R.id.email_sign_in_button))
                    .check(ViewAssertions.matches(ViewMatchers.isEnabled()))
                    .check(ViewAssertions.matches(ViewMatchers.isClickable()))
                    .perform(ViewActions.click());
    
        
        }
    }
    

    用到的类:

    • ViewInteration: 用来模拟View的类,可以在执行ViewAction和检查View
    • ViewAction: 代表clicktypeText等事件
    • ViewMatcher: 用于匹配View和验证View
    • ViewAssertion: 验证View正确性

    ViewActionsViewMatchersViewAssertions都是对上面类的一些封闭里面包含了很多静态方法。

    运行测试

    运行前要关闭所有动画可以在开发者选项中关闭,然后Run testLogin。测试的Activity尽量不要Activity里面运行finish方法,如果你的Activity已经关闭了但你的测试还在跑的话测试会失败。还有不知道算不算个Bug如果你的EditText的error是个空的话,当你调用ViewMatchers.hasErrorText的时候会报空指针异常。

  • 相关阅读:
    Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录
    bypass disable_function的方法及蚁剑插件bypass-php-function使用
    cisco-GNS3-pix防火墙基本配置实操(持续更新)
    "锁定文件失败 打不开磁盘或它所依赖的某个快照磁盘。模块启动失败。未能启动虚拟机"--解决方法
    python实现图片转字符画
    GNS3--cisco路由器NAT配置
    python虚拟环境----virtualenv
    防火墙----思科路由器基本配置1
    XXE漏洞学习1
    vc程序设计-----位图
  • 原文地址:https://www.cnblogs.com/xwgblog/p/5153222.html
Copyright © 2011-2022 走看看