Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Android Espresso测试中期望异常-失败

在Android Espresso测试中期望异常-失败
EN

Stack Overflow用户
提问于 2019-01-22 10:05:38
回答 1查看 795关注 0票数 2

我正在使用Kotlin在Espresso中为我的Android应用程序编写测试。我希望在单元测试中出现异常,如果发现这样的异常,则通过测试。

我做了一个测试,检查Intent extras格式。在实现中,在intent中获得不正确的值后,我抛出了一个异常。我想通过这个异常抛出的测试。运行带有“测试失败”和java.lang.IllegalArgumentException的测试结果,这与我试图捕获的结果相同。

我一开始尝试了这个注解:

@Test(expected = IllegalArgumentException::class)

然后,我尝试使用org.jetbrains.kotlin:kotlin-test依赖项和以下断言:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
assertFailsWith<java.lang.IllegalArgumentException> {
    val activityIntent = Intent()
    activityIntent.putExtra("extra_connection_number", intentExtraConnectionNumber)
    activityRule.launchActivity(activityIntent)
}

同样重要的是,异常是从onCreateView开始抛出的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Throws(java.lang.IllegalArgumentException::class)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
    val layout = inflater.inflate(R.layout.configuration_fragment, container, false)
    var connectionNumber: Int? =
        activity!!.intent.getIntExtra(resources.getString(R.string.extra_connection_number), -1)
    if (connectionNumber == -1) {
        throw IllegalArgumentException()
    }
(...)

意图是用给定的额外内容创建的,它在我希望它失败的地方失败了。但是抛出的异常不会被Espresso捕获。为什么?我遗漏了什么?

我知道它可能与Espresso不兼容,但我找不到正确的文档来帮助我解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-11-20 00:37:40

使用普通的try catch解决了我的问题,我知道异常是嵌套的。但是我们仍然可以通过原因来检查它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var error: Throwable? = null
try {
    onView(something).perform(click())
} catch (e: Throwable) {
    error = e;
}
assert(error!!.cause is MySpecificException)
assert(error!!.cause!!.message == "My specific error message")

我尝试了另一个approach,但最终测试结果不稳定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54305748

复制
相关文章
HttpClient来自官方的JSON扩展方法
Json的序列化和反序列化是我们日常常见的操作,通过System.Net.Http.Json我们可以用少量的代码实现上述操作.正如在github设计文档中所描述
HueiFeng
2020/04/13
1.2K0
HttpClient来自官方的JSON扩展方法
Json的序列化和反序列化是我们日常常见的操作,通过System.Net.Http.Json我们可以用少量的代码实现上述操作.正如在github设计文档中所描述
HueiFeng
2020/04/15
1K0
【API架构】使用 JSON API 的好处
在 API 工艺的世界里,没有比设计更受热议的领域了。从 REST、gRPC 到 GraphQL,有许多方法可以设计和标准化 Web API 交互。今天,我们将注意力转向另一种方法,JSON API,JSONAPI.org 上详细介绍的用于构建 API 的规范。
架构师研究会
2022/05/29
2.8K0
python匹配两个文件中相同的内容
data_small.txt中内容如下: 343 0 5258 1 3973 2 data_big.txt中内容如下: 343 2009-05-30T17:01:58Z 39.04183745 -94.5914053833 9191 343 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 8904 23 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 8904 56 2009-05-27T18:59:50Z 39.0424168 -94.59061145 9188 5258 2009-05-15T00:09:42Z 38.9920234667 -94.5920920333 10927 5258 2009-05-27T18:59:50Z 39.0424168 -94.59061145 9188 545 2009-05-15T00:09:42Z 38.9920234667 -94.5920920333 10927 3973 2009-05-14T20:47:20Z 39.0142536 -94.5928215833 12305 3973 2009-05-14T20:43:05Z 39.0146281324 -94.5907831192 9627
全栈程序员站长
2022/11/07
2.3K0
Chrome 102:新增两个 HTML 属性、两个 JS API !
inert 属性是一个全局的 HTML 属性,它可以告诉浏览器忽略元素的用户输入事件,包括焦点事件和来自辅助技术的其他事件。主要是下面两种用例:
ConardLi
2023/01/09
1.9K0
Chrome 102:新增两个 HTML 属性、两个 JS API !
让Laravel API永远返回JSON格式响应的方法示例
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式。
用户2323866
2021/07/13
2.7K0
JSON API
FreeSWITCH早在1.4时代就有了JSON API,然而,却没有引起大家的重视。其实,JSON API的设计有更好的结构化和扩展性,配合HTTP和Websocket接口,必将大有作为。
杜金房
2020/12/21
9210
推荐两个C++API参考网站
C++ 标准库接口众多。在实际使用时如果不熟悉常常感到无从下手。阅读开源代码时,常常能看到使用C++新特性的优美代码,但却显得那么陌生。
首飞
2022/04/18
2.8K0
推荐两个C++API参考网站
Spring Boot 中如何统一 API 接口响应格式?
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2021/04/01
1.3K0
来自群友的分享
我是来自某大学本科,刚打完一个关于机器人的比赛,简单来说我在里面是负责识别一排矩形物体,返回最近的一个长方体并返回其相对于深度相机的三维坐标和角度。因为要使机器人运动,所以相对于机器人的角度信息也是必要的。
点云PCL博主
2019/07/30
8110
来自群友的分享
性能工具之JMeter两个Java API Demo
https://github.com/7DGroup/JMeter-API-Demo
高楼Zee
2019/07/17
2K0
JSON Web 令牌(JWT)是如何保护 API 的
你可以已经听说过 JSON Web Token (JWT) 是目前用于保护 API 的最新技术。
用户4283147
2022/10/27
2.1K0
Shenandoah GC:一个来自JDK12的全新并发压缩垃圾回收器
是不是才听说了JDK11的ZGC,并且还没搞懂?不好意思,OpenJDK12马不停蹄的带来了Shenandoah GC。
Java_老男孩
2019/12/02
1.5K0
Automa-通过连接块来自动化你的浏览器
通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。
wangmcn
2023/08/22
7700
Automa-通过连接块来自动化你的浏览器
Ids4 认证保护 API 方案更新
可能你咋一看这个标题不知道什么意思,其实我也没想好怎么表达,因为是一个特别简单的小知识点。
老张的哲学
2022/04/11
9680
Ids4 认证保护 API 方案更新
Solr 如何自动导入来自 MySQL 的数据
在笔记 2 中,可能在执行导入时会报错,那是因为还需要将 mysql-connector-java-xxx.jar 放入 solr-xxx/server/lib 文件夹下;
村雨遥
2022/06/15
2K0
Solr 如何自动导入来自 MySQL 的数据
来自Byron同学的解答
使用了第三方的网页分析模块BeautifulSoup,可以从这里下载最新版:http://www.crummy.com/software/BeautifulSoup/ =============== #!usr/bin/python #coding:utf-8 ''' @author:Byron 新浪围脖:http://weibo.com/ziyuetk ''' import urllib2 from bs4 import BeautifulSoup print "豆瓣正在热映:" url = "http:
Crossin先生
2018/04/17
6530
点击加载更多

相似问题

来自linkedin的JSON api响应

19

在视图中显示来自api的JSON响应

10

来自SpreadSheet API的JSON响应

28

来自json API响应的列表

112

来自服务器的JSON响应来自R- REST API

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文