首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Espresso测试中调用自定义视图上的方法?

在Espresso测试中调用自定义视图上的方法,可以通过以下步骤实现:

  1. 首先,确保你已经设置了Espresso测试框架并导入了相关的依赖。
  2. 在测试代码中,使用onView()方法找到你想要测试的自定义视图。可以使用withId()方法通过视图的资源ID来定位视图,或者使用其他匹配器方法来定位视图。
  3. 使用perform()方法来执行操作。在这个方法中,你可以调用自定义视图上的方法。例如,如果你的自定义视图有一个名为customMethod()的方法,你可以使用perform()方法来调用它,如下所示:
代码语言:txt
复制
onView(withId(R.id.custom_view)).perform(new ViewAction() {
    @Override
    public Matcher<View> getConstraints() {
        return isAssignableFrom(CustomView.class);
    }

    @Override
    public String getDescription() {
        return "Call customMethod() on CustomView";
    }

    @Override
    public void perform(UiController uiController, View view) {
        ((CustomView) view).customMethod();
    }
});

在上面的代码中,我们使用perform()方法传递了一个ViewAction对象,该对象定义了在自定义视图上执行的操作。在perform()方法的perform()回调中,我们将视图强制转换为自定义视图类型,并调用了customMethod()方法。

这样,你就可以在Espresso测试中调用自定义视图上的方法了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 单元测试和 UI 测试初步实践

环境下才能运行 接下来,笔者将尝试为自己项目(基于 MVP 架构开发)补充相应单元测试用例和 UI 测试用例,来初步实践下如何在 Android 平台编写和运行相关测试用例。...它跟 @Rule 注解几乎相同,可以在所有类方法开始前进行一些相关初始化调用操作。使用这个注解,可以在执行测试用例时候加入特有的操作,而不影响原有用例代码,有效减少耦合程度。...所谓 mock 就是创建一个类虚假对象,在测试环境,用来替换掉真实对象,以达到验证对象方法调用情况,或是指定这个对象某些方法返回特定值等; @Before 注解方法会在执行测试用例之前执行...执行操作:执行 P 层 NewsPresenter#getNews()。在业务逻辑,执行此方法之后,会先调用 DataManager#getNews(),然后将数据交给 V 层代理。...其实这个方法也是有输出,输出就是:调用了 DataManager#getNews() 方法,获取到数据后调用 NewsContract.View#showNews(news) 显示数据。

2K10
  • 【Android Gradle 插件】Android 依赖管理 ③ ( dependencies 依赖配置 | Project#dependencies 函数分析 | 自定义依赖配置 )

    依赖配置范围 ---- Gradle 构建过程 , 依赖 作用范围 是不同 , : 有的依赖只在 源码编译时使用 , Android Gradle 插件 依赖 ; 有的依赖只在 开发时单元测试运行..., 单元测试依赖 ; 有的依赖需要 编译打包到 Apk 文件 , 工程依赖库 ; 依赖配置 作用范围 是可以自定义 , 在 Gradle 构建工具 , 内置了如下几种依赖配置项...:espresso-core:3.4.0' } 二、Project#dependencies 函数分析 ---- dependencies 是 Project 类函数 , Project#dependencies...implementation 配置 , 实际上调用是 DependencyHandler#add 方法 , public interface DependencyHandler extends ExtensionAware...是可以自定义 , implementation 依赖配置 , 在 build.gradle 构建脚本 , 可以自定义依赖配置 , 在 configurations , 可以自定义依赖配置 ;

    1K10

    5个Android经典面试题

    客户端通过服务管理器获取服务端 Binder 对象代理。 客户端通过代理对象调用服务端方法,这些调用会被转换为 Binder 驱动处理事务。...MVVM通过数据绑定减少了Presenter逻辑,使得View和ViewModel更易于测试和维护。 3. 如何在Android实现组件化开发? 组件化开发是将应用分解成多个可重用和可测试模块。...当应用运行时,框架拦截需要修复方法调用,并转发到修复后实现。...如何在Android实现单元测试和集成测试? 单元测试和集成测试是确保应用质量重要手段。在Android,可以通过以下方式实现: 单元测试:使用JUnit和Mockito等框架来测试独立模块。...集成测试:使用Espresso和UI Automator来测试应用UI和交互。

    9610

    python接口测试:在一个用例文件调用另一个用例文件定义方法

    简单说明 在进行接口测试时,经常会遇到不同接口间传递参数情况,即一个接口某个参数需要取另一个接口返回值; 在平常写脚本过程,我经常会在同一个py文件,把相关接口调用方法都写好,这样在同一个文件能够很方便进行调用...,需要调整很多地方; 所以,当我们在一个用例py文件写好某个接口调用方法,后续如果在其他py文件也要用到这个接口返回值,则直接引用先前py文件定义好接口调用方法即可。...,它作用是查看数据详情 ; (3)第44行,创建一条查看活动数据详情测试用例test_case_01; 接下来是重点: 在这条用例下调用view_activity方法,而view_activity方法有一个必传参数...id,这个id就是由test_A.py文件CreateActivity类下 push_file_download 方法生成; 所以这里要先调用push_file_download方法,对应第...,当跨用例文件进行调用某个方法时,需要看下这个方法是否依赖于其他方法,如果有依赖的话,则需要先调用其将依赖方法

    2.9K40

    quarkus依赖注入之八:装饰器(Decorator)

    方法,先调用父类send(也就是被装饰类send),然后才是自己业务逻辑 quarkus也支持装饰器模式,通过注解Decorator和Delegate实现,今天咱们就通过实战掌握如何在quarks...*/ int getPrice(); } 然后是最基础意式浓缩咖啡,非常简单一个bean,定价3美元,这里有个细节要注意:name方法写死了字符串Espresso,而没用getClass...在getPrice方法打印出delegate.name方法返回值,验证delegate身份,以确认quarkus注入是否正确 注解Priority很重要,留在接下来CaramelMacchiato...Espresso,CaramelMacchiato装饰是Latte 单元测试类 最后是单元测试类,成员变量类型是Coffee,也就是说quarkus容器会自动注入装饰过CaramelMacchiato...,CaramelMacchiato优先级更大,因此更靠近Espresso,由它去装饰Espresso,Latte离Espresso更远,所以它装饰是CaramelMacchiato 再次运行单元测试

    62120

    【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )

    视图绑定 ( ViewBinding ) 对于正常操作影响测试 IV . 视图绑定 ( ViewBinding ) 关联 Activity 界面 V ....Android 项目中布局文件数量比较大 ; 现在 Android 项目如果比较大 , 布局文件可能存在上百个 , Activity , Fragment , 自定义布局 Dialog , 自定义...因此这里需要讨论如下问题 : 如果在 build.gradle 启用了视图绑定模块 , 对已经开发好代码是否有影响 , 本博客会进行详细测试 ; 5 ....Android 官方文档给出定制方案 : 如果当前有几百个布局文件 , 为了不影响之前代码 , 可以在每个布局根视图上配置 tools:viewBindingIgnore=“true” 属性 ;...视图绑定 ( ViewBinding ) 对于正常操作影响测试 ---- 1 .

    76310

    Espresso 遇见 Android 单元测试

    1、将UI控件放入Activity(xml配置); 2、添加一个输入框(也可用Spinner)和按钮用来提交命令,不同命令控制UI控件调用不同函数,Activity制作完成; 3、使用Espresso...以上,UI控件执行了初始化代码及各函数代码,达到单元测试目的。 那么问题来了,为何不用Espresso直接获取UI控件对象进行函数调用呢?...因为Android更改UI只能在UI线程中进行,所以改变控件属性代码只能写在Activity代码,而不是Espresso测试代码。...其他函数为初始化或被测函数调用函数,都会被自动调用执行。 Activity需要完成解析命令执行以上对应UI控件函数,根据输入框输入字符来区分。 由此,Activity便制作完成。...总结 综上,不同角色处理不同事务。 Activity显示UI控件、解析命令与调用UI控件函数。

    2.5K10

    测试左移专栏】用 Powermock 和 Mockito 来做安卓单元测试

    程序单元是应用最小可测试部件。在过程化编程,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)方法。...测试方式:以正常小QA测试思维方法,就可以来定义这一层测试方式,测试过程需要真机或模拟器,并做真实操作。...测试选型:依赖于Android环境,用谷歌强大Espresso+AndroidJunitRunner,Espresso用于模拟和验证各种各样UI操作,代码存放于AndroidTest。...另外被它强大Shadows方式所吸引,可以完全实现自定义方式。 但在实际使用过程遇到了不少坑,比如: Robolectric版本和SDK版本强依赖。...与PowerMockito.doThrow使用; (5)如何验证方法调用; (6)如何验证调用次数方法; (7)测试或模拟final类或方法; (8)测试或模拟构造方法; (9)如何做参数匹配; (

    4.1K00

    Android使用Espresso实现UI自动化测试

    谷歌2013年时候开源了Espresso,谷歌思路是,等到它足够成熟和稳定以后,将其迁移到Android SDK,以此可见对他重视。...Espresso测试是非常容易实现,由三步构成: ViewMachers:寻找用来测试View。 ViewActions:发送交互事件。...androidTest:进行与Android相关(调用Android设备等)测试; test:进行简单只涉及java SE相关测试。...@Test @Test public void testLogin() { ... } 定义一个测试方法,当你测试类运行时,所执行代码就是Test注解下方法(Espresso还提供了其他一些注解...也可以执行多个操作在一个perform:perform(click(),clearText())。 所有的操作都有一个前提 ———— 就是要执行view必须在当前界面上显示出来(有且可见)。

    1.5K20

    Android Studio2.2下NDK开发初试

    很久没更博了,这次来记录一下如何在Android Studio2.2进行NDK开发吧,NDK开发嘛,就是将C/C++代码编译成so类库,供java调用(当然c调用java也是可以),还记得以前没有...hello-jni地方,先loadLibrary static { System.loadLibrary("hello-jni"); } 然后,声明需要调用native方法...(JNIEnv *env, jobject type, 自定义参数...) {} OK,既然前面提及过JNI也可以调用java方法,那么这里也一并说了吧。...首先,我们需要获取java函数methodID,例如我这里是获取设置进度条进度方法,先获取方法所在jclass,需要注意是,这里FindClass第二个参数classname需要完整类名,因此需要包名...:  在native method引用完java对象后及时调用env->DeleteLocalRef方法手动释放本地引用  如果native method返回java对象就不需要手动release

    96950

    Espresso浅析和使用

    测试用例 1.1 三步曲 写UI自动化测试用例,归结起来就是3步: 定位View控件 操作View控件 校验View控件状态 对应Espresso,就是以下3个方法调用: onView(ViewMatcher...这里面有一些注解,@Rule修饰是被测试Activity,@Test修饰方法测试用例。...Activity层级跳转越多,越容易出错 强烈不推荐,直接获取View对象,调用View方法来模拟用户操作。...应该统一使用Espresso提供方法 测试用例,特别是UI自动化测试用例,应该尽量保持逻辑简单,覆盖关键路径就足矣。因为UI变动是很频繁,越复杂,维护成本就越高,投入产出比就会自然降低了。...希望更多团队能够实现Google期许最大化利用Espresso,把Bug扼杀在摇篮

    2.4K00

    Android利用Espresso进行UI自动化测试方法详解

    答案是肯定,这就是本文所要说自动化测试。 引言 谷歌2013年时候开源了espress,谷歌思路是,等到它足够成熟和稳定以后,将其迁移到Android SDK,以此可见对他重视。...Espresso测试是非常容易实现,由三步构成: ViewMachers:寻找用来测试View。 ViewActions:发送交互事件。...androidTest:进行与Android相关(调用Android设备等)测试; test:进行简单只涉及java SE相关测试。...@Test @Test public void testLogin() { ... } 定义一个测试方法,当你测试类运行时,所执行代码就是Test注解下方法(Espresso还提供了其他一些注解...也可以执行多个操作在一个perform:perform(click(),clearText()) 。

    2.4K10

    LinkedIn 将 Espresso 从 HTTP1.1 迁移到 HTTP2,连接数减少 88%,延迟降低 75%

    此外,由于增加了大量 HTTP/1.1 连接,从连接池中获取连接所需时间达到了几毫秒。最后,在发生网络事件(交换机升级)期间,由于达到存储节点连接限制,重新建立数千个连接可能会导致错误。...,我们早期方法是使用了 HTTP/1.1,这是一种广泛用于 Web 服务器和客户端之间交互协议。...然而,HTTP/1.1 是基于每个请求连接,在大规模集群,这种方法会导致路由器和存储节点之间产生数百万个并发连接。这导致了可伸缩性、弹性和众多与性能相关障碍。...此外,SSL 处理使用原生、基于 JNI SSL 引擎进行了优化,并使用自定义 SSL 初始化逻辑避免了冗长 DNS 查找延迟。...最后,团队通过创建自定义编解码器来优化编码 / 解码性能,编解码器将 HTTP/2 请求封装为 HTTP/1.1 请求,帮助处理 Espresso 使用许多自定义 HTTP 标头,并禁用了 HPACK

    14320

    Android UI 测试 - Espresso

    不比单元测试,依然要编译运行到真机上,没敢用公司项目测,只是建了个最简单 Demo,就感觉好慢,测试一次好慢。...设置 测试环境准备 开发者选项关掉动画: Window animation scale 窗口动画缩放 Transition animation scale 过渡动画缩放 Animator duration...ViewAssertions – 检查 View 状态,类似单元测试断言 找到 View 有时候 View 可能没有对应 R.id,或者虽然有但是不唯一。...用最少过滤方法寻找 View,过滤方法越多,框架做事情越重,比如能通过 withId 获取到唯一 View,就不要再 withText 了。.../android/support/test/espresso/action/ViewActions 检查状态 主要通过 .check(matches()) 方法,matches 里是寻找 View 那些过滤方法

    1.1K10

    google maps api_js调用谷歌浏览器接口

    addMapType()该方法必须在构造地图实例之后初始化地图状态时立即执行.在地图刚刚构造时候调用地图其他方法都将会产生错误....enableGoogleBar():设置地图上搜索栏 4.有关地图覆盖物方法: addOverlay(overlay) 在地图上添加一个标注并触发地图addoverlay事件....假如在构造函数设置了 unbounded 标记,则经度坐标值可能超出此范围。 6. GPoint类 GPoint 是以像素坐标表示图上一点。...bind(source, event, object, method)返回GEventListener 将给定对象方法调用注册为源对象自定义事件处理程序。...bindDom(source, event, object, method)返回 GEventListener 将给定对象方法调用注册为源对象自定义事件处理程序。

    5.7K10

    Android开发者UI自动化测试上手指南

    .check(matches(isDisplayed())); } 代码逻辑也是典型三步: 首先通过withId方法找到了id为name_fieldEditText组件,并且调用typeText方法对其进行设置...TextView组件,调用check方法判断该组件是否匹配(matches方法)是否可见状态(isDisplayed)。 ?...一些Espresso主要方法 UI自动化具体实例 这里建议参照官方文档给出步骤进行实践,示例给出自己在实践demo配置自动化测试基本步骤。...在gradle添加支持 在app目录下build.gradledependencies设置对Espresso编译依赖,在android.defaultConfig设置InstrumentationRunner...当方法执行完成,调用ResourceCallback.onTransitionToIdle();则会进行回调通知测试线程继续执行验证代码。 总结 一切能自动化完成测试操作就不要浪费时间用手动完成。

    84820

    在Android Studio环境下建立UiAutomator环境

    在平台移植过程参考了网上许多资料,都不太系统,现在我将如何在Android Studio环境下建立UiAutomator环境给大家做个详细介绍。...利用Android Studio环境下建立UiAutomator环境,需要升级sdktools目录,升级方法如下: cd %ANDROID_HOME%; 把目录名tools改为too;l cd tool...在这里特别注意: 在UiAutomator1.0继承是UiAutomatorTestCase,而2.0继承是InstrumentationTestCase 在UiAutomator1.0使用getUiDevice...()方法获得UiDevice对象,而在2.0已经不再存在getUiDevice()方法了,而2.0采用instrumentation = InstrumentationRegistry.getInstrumentation...在2.0UiDevice 类增加了如下方法: 返回值 方法名 描述 void dumpWindowHierarchy(OutPutStream out) 获取当前页面层级到输出流 String executeShellCommand

    2.2K30
    领券