Android官方开发文档Training系列课程中文版:Activity测试之创建单元测试

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-unit-testing.html

Activity单元测试除了可以快速的验证Activity的状态之外,还可以验证Activity与底层组件之间的交互。单元测试通常用于测试较小的代码单元(它们通常不依赖系统或者网络资源),它们可能是一个方法,一个类或者其它组件。例如,开发者可以通过单元测试来检查Activity是否含有正确的布局,或者是否触发了正确的Intent。

不过单元测试通常不适用于测试与系统有交互的UI组件,该类测试情况应当使用ActivityInstrumentationTestCase2。

这节课将会学习如何使用单元测试来验证用于启动Activity的Intent。因为测试运行于独立的环境之中,所以Intent并不会实际发送到Android系统,但是你可以检测该Intent所携带的数据是否正确。

创建用于Activity单元测试的测试用例

类ActivityUnitTestCase对单个的Activity测试提供了支持。要进行Activity的单元测试,需继承ActivityUnitTestCase。

在ActivityUnitTestCase中的Activity并不会由Android系统自动启动。如果要在这里启动Activity,必须在这里显式的调用startActivity()方法,并传入要执行的Intent。

例如:

public class LaunchActivityTestextends ActivityUnitTestCase<LaunchActivity> {...@Overrideprotected void setUp() throws Exception {super.setUp();mLaunchIntent = new Intent(getInstrumentation().getTargetContext(), LaunchActivity.class);startActivity(mLaunchIntent, null, null);final Button launchNextButton =(Button) getActivity().findViewById(R.id.launch_next_activity_button);}
}

验证另一个Activity的启动

单元测试可能含有以下目的:

  • 验证在Button按下后LaunchActivity是否启动了Intent.
  • 验证被启动的Intent所包含的数据是否正确.

为了验证在Button按下后是否有Intent被触发,开发者可以使用getStartedActivityIntent()方法获得被触发的Intent。然后通过断言方法来验证该方法返回的Intent是否为null,以及该Intent所含的数据是否正确。如果两个断言方法都正确,那么可以断定成功了触发了该Intent。

开发者所实现的代码可能如下:

@MediumTest
public void testNextActivityWasLaunchedWithIntent() {startActivity(mLaunchIntent, null, null);final Button launchNextButton =(Button) getActivity().findViewById(R.id.launch_next_activity_button);launchNextButton.performClick();final Intent launchIntent = getStartedActivityIntent();assertNotNull("Intent was null", launchIntent);assertTrue(isFinishCalled());final String payload =launchIntent.getStringExtra(NextActivity.EXTRAS_PAYLOAD_KEY);assertEquals("Payload is empty", LaunchActivity.STRING_PAYLOAD, payload);
}

因为LaunchActivity是独立运行的,所以不能够使用库TouchUtils来直接控制UI。为了可以模拟Button的点击时间,可以直接调用performClick()方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MoCoV3:何恺明团队新作!解决Transformer自监督训练不稳定问题!

文 | happy源 | 极市平台论文链接: https://arxiv.org/abs/2104.02057本文是FAIR的恺明团队针对自监督学习Transformer的一篇实证研究。针对Transformer在自监督学习框架中存在的训练不稳定问题&#xff0c;提出了一种简单而有效的技巧&#xff1a;Random Patch Projection&…

LeetCode 496. 下一个更大元素 I(哈希)

1. 题目 给定两个没有重复元素的数组 nums1 和 nums2 &#xff0c;其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。 nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在&#xff0c;对应…

论文浅尝 - AAAI2020 | 多模态基准指导的多模态自动文摘

论文笔记整理&#xff1a;刘雅&#xff0c;天津大学硕士。链接&#xff1a;https://aaai.org/ojs/index.php/AAAI/article/view/6525动机近年来&#xff0c;随着计算机视觉以及自然语言处理技术的发展&#xff0c;多模态自动文摘技术逐渐成为学术界和工业界研究的热点。当前的多…

Android官方开发文档Training系列课程中文版:Activity测试之创建功能性测试

原文地址&#xff1a;http://android.xsoftlab.net/training/activity-testing/activity-functional-testing.html 功能性测试包括模拟用户操作之类的组件验证。例如开发者可以通过功能性测试来验证在用户执行了UI操作之后Activity是否启动了Activity。 如要为Activity创建功…

改进YOLOv8注意力系列三:结合CrissCrossAttention、ECAAttention、EMAU期望最大化注意力

改进YOLOv8注意力系列三:结合CrissCrossAttention、ECAAttention、EMAU期望最大化注意力 代码CrissCrossAttention注意力ECAAttention通道注意力EMAU期望最大化注意力加入方法各种yaml加入结构本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方式,在本文中…

美团点评智能支付核心交易系统的可用性实践

背景 每个系统都有它最核心的指标。比如在收单领域&#xff1a;进件系统第一重要的是保证入件准确&#xff0c;第二重要的是保证上单效率。清结算系统第一重要的是保证准确打款&#xff0c;第二重要的是保证及时打款。我们负责的系统是美团点评智能支付的核心链路&#xff0c;承…

python编程之如何判断某个元素在不在列表里面

python编程之如何判断某个元素在不在列表里面 keyword_list ["对象","python"]if "对象" in keyword_list:print("对象在关键词列表中")else:print("对象不在关键词列表中")结果&#xff1a; 对象在关键词列表中

Transformer太大了,我要把它微调成RNN

文 | 炼丹学徒编 | 小轶从前车马很慢&#xff0c;显卡跑的也慢&#xff0c;一生只够爱一个RNN。后来时代进步了&#xff0c;数据量和计算力阔绰了&#xff0c;堆叠起来的Transformer能够在更深更宽的模型结构里吃下去更多的数据。从19年的预训练浪潮开始&#xff0c;暴力美学兴…

论文浅尝 - JWS2020 | FEEL: 实体抽取和链接的集成框架

论文笔记整理&#xff0c;谭亦鸣&#xff0c;东南大学博士生。来源&#xff1a;JWS 2020链接&#xff1a;https://www.sciencedirect.com/science/article/pii/S157082682030010X?via%3Dihub介绍实体抽取和链接&#xff08;Entity extraction and linking, EEL&#xff09;是语…

一步步手动实现热修复(一)-dex文件的生成与加载

*本篇文章已授权微信公众号 guolin_blog &#xff08;郭霖&#xff09;独家发布 热修复技术自从QQ空间团队搞出来之后便渐渐趋于成熟。 我们这个系列主要介绍如何一步步手动实现基本的热修复功能&#xff0c;无需使用第三方框架。 在开始学习之前&#xff0c;需要对基本的热…

标签生成-基于标签的的推荐系统

0 推荐系统之标签体系 1 干货&#xff0c;如何建立数据标签体系 https://cloud.tencent.com/developer/article/1778469 2 《推荐系统》基于标签的用户推荐系统&#xff1a; 3 推荐系统 - 基于标签的推荐算法

美团酒旅实时数据规则引擎应用实践

背景 美团点评酒旅运营需求在离线场景下&#xff0c;已经得到了较为系统化的支持&#xff0c;通过对离线数据收集、挖掘&#xff0c;可对目标用户进行T1触达&#xff0c;通过向目标用户发送Push等多种方式&#xff0c;在一定程度上提高转化率。但T1本身的延迟性会导致用户在产生…

开直播辣!生成对抗网络全脉络梳理!

深度学习中最有趣的方法是什么&#xff1f;GAN&#xff01;最近最火的AI技术是什么&#xff1f;GAN&#xff01;&#xff01;你现在脑子里在想什么&#xff1f;搞定GAN&#xff01;&#xff01;&#xff01;【已经大彻大悟要直接报名公开课、挑战万元奖品池的请划到最后】GAN真…

论文浅尝 - ICLR2020 | 具有通用视觉表示的神经机器翻译

论文笔记整理&#xff1a;柏超宇&#xff0c;东南大学在读硕士。来源&#xff1a;ICLR2020 https://openreview.net/forum?idByl8hhNYPS代码链接&#xff1a;https://github.com/cooelf/UVR-NMT简介和动机近年来&#xff0c;不少工作已经证明了视觉信息在机器翻译&#xff08;…

实体链指比赛方案分享

实体链指比赛方案分享&#xff1a;https://aistudio.baidu.com/aistudio/projectdetail/1331020?channelType0&channel0 实体链指比赛方案分享 比赛任务 实体链指&#xff0c;又称实体链接&#xff08;Entity Linking&#xff0c;EL&#xff09;&#xff0c;即对于给定的…

一步步手动实现热修复(二)-类的加载机制简要介绍

*本篇文章已授权微信公众号 guolin_blog &#xff08;郭霖&#xff09;独家发布 本节课程主要分为3块&#xff1a; 1.一步步手动实现热修复(一)-dex文件的生成与加载2.一步步手动实现热修复(二)-类的加载机制简要介绍3.一步步手动实现热修复(三)-Class文件的替换 本节示例所…

知识图谱能否拯救NLP的未来?

文 | Luke知乎知识图谱是NLP的未来吗&#xff1f;2021年了&#xff0c;不少当年如日中天技术到今天早已无人问津&#xff0c;而知识图谱这个AI界的大IP最火的时候应该是18&#xff0c;19年&#xff0c;彼时上到头部大厂下到明星创业公司都在PR自己图谱NLP布局能够赋予AI认知能力…

论文浅尝 | Data Intelligence 已出版的知识图谱主题论文

本文转载自公众号&#xff1a;DI数据智能。 知识图谱被称为人工智能的基石&#xff0c;它的前身是语义网&#xff0c;由谷歌在2012年率先提出&#xff0c;用于改善自身的搜索业务。Data Intelligence执行…

一步步手动实现热修复(三)-Class文件的替换

*本篇文章已授权微信公众号 guolin_blog &#xff08;郭霖&#xff09;独家发布 本节课程主要分为3块&#xff1a; 1.一步步手动实现热修复(一)-dex文件的生成与加载2.一步步手动实现热修复(二)-类的加载机制简要介绍3.一步步手动实现热修复(三)-Class文件的替换 本节示例所…

Vision Transformer 论文解读

原文链接&#xff1a;https://blog.csdn.net/qq_16236875/article/details/108964948 扩展阅读&#xff1a;吸取CNN优点&#xff01;LeViT&#xff1a;用于快速推理的视觉Transformer https://zhuanlan.zhihu.com/p/363647380 Abstract: Transformer 架构早已在自然语言处理…