检查Java测试中发生了什么

有人想到了在Java单元测试中使用trycatch块的想法:

 @Test  public void test() { try { callSomeCode(); } catch (Exception e) { assertEquals( "foo" , e.getMessage()); }  } 

上面的内容很诱人,但不起作用 。 如果被测代码没有抛出,则不会执行任何断言。

所以要解决它:

 @Test  public void test() { try { callSomeCode(); // if we get here there was no exception fail(); } catch (Exception e) { assertEquals( "foo" , e.getMessage()); }  } 

我们添加了一个fail ,这使其完全测试了是否抛出了正确的东西,但这很尴尬。

这是测试气味 过分主张的一个例子。

有多少种方法可以测试抛出的内容?

我所知道的所有方式:

  • 长远地做(上面)
  • 使用@Test(expected = ... )批注检查以正确的异常结尾的测试
  • 使用ExpectedException JUnit 规则 ,该规则允许您定义要结束的测试
  • 使用为您捕获异常的断言

为什么预期的异常模式不起作用

此处针对长期的方法进行了解释的规则使您可以定义以异常结尾的测试功能的成功标准。

例如

 // default to expecting no exception  @Rule  public ExpectedException expectedException = ExpectedException.none();  @Test  public void test() { // the call should end in the right exception expectedException.expectMessage(is( "foo" )); // do the call callSomeCode();  } 

这很有吸引力,但仍然是错误的

给定/何时/然后发生了什么?

测试应从上至下读取,并在末尾声明。 预期的异常模式必须在产生断言/期望的调用之前定义断言/期望,这是向后的。

反过来:

 @Test  public void test() { assertThatThrownBy(() -> callSomeCode()) .hasMessage( "foo" );  } 

简洁并能向前看。

翻译自: https://www.javacodegeeks.com/2019/08/checking-whats-thrown-in-java-tests.html

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

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

相关文章

学习红客技术必备

互联网时代已悄悄来临,作为新时代的人们,我们日常生活、工作、学习方面都需要借助互联网来完成,这样,又产生一种新的问题,那就是网络安全的问题,有时我们拼命加班好不容易完成的东西,在一夜之间…

md5withrsa java_浏览器运行java插件报错:Algorithm constraints check failed: MD5withRSA

今天使用kvm管理机房机器的时候发现一只连不上,报以下错误:sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Algorithm constraints check failed: MD5withRSA我确认我已经把…

jpa 实体映射视图_JPA教程:实体映射-第3部分

jpa 实体映射视图在上一篇文章中,我展示了两种读取/写入持久实体状态的不同方法-字段和属性。 使用字段访问模式时,JPA使用反射直接从实体的字段读取状态值。 如果我们没有明确指定列名,它将直接将字段名转换为数据库列名。 在属性访问模式下…

今晚课题:2019-3-20

今晚课题C/C万年历技术实现原理上课时间:20:30--22:30上课老师:杰越教育-Larry老师上课地址:https://ke.qq.com/course/353889 课程内容:1、C/Cfor逻辑原理2、重要点数据结构分析3、万年历效果实现展示赢在别人休息时,…

python在材料模拟中的应用_材料模拟python_模拟-python模拟-在不妨碍实现的情况下修补方法...

此答案解决了Quuxplusone用户提供的赏金中提到的其他要求:对于我的用例而言,重要的是它可以与MagicMock一起使用,即,它不需要我在构造Potato(在此示例中为spud)实例与调用spud.foo(在本例中)之间插入任何代码。我需要293984865472…

新版本的Selenium 4 Alpha会有什么期望?

我们所有人都属于测试领域,他们熟悉Selenium,Selenium是业界最流行的开源自动化工具之一。 Selenium的创始成员Simon Stewart在2018年8月正式宣布Selenium 4的发布日期以及它将为用户带来哪些新功能时,我们感到非常兴奋。 与Selenium 3一样&…

今晚课题:2019-3-22

今晚课题数据结构必会重点集合上课时间:20:30--22:30上课老师:杰越教育-Larry老师上课地址:https://ke.qq.com/course/353889 课程内容:1、C/C技术工作运用2、数据结构重点数组定义特点3、工作项目数组合理使用赢在别人休息时&…

java 单例 实现_java 实现单例的各种方式

概述上一篇日志中,我们介绍了单例模式的概念和基础的应用本节中,我们就来介绍一下 java 语言中如何编写单例模式类只适合单线程环境的单例模式public class Singleton {private static Singleton instance null;private Singleton() { }public static S…

Drools DMN最新开源引擎性能改进

我们一直在寻求改善Drools DMN开源引擎的性能。 我们最近审查了DMN用例,其中输入数据节点的实际输入总体有所不同。 这突出显示了引擎的次佳性能,我们在最新版本中对此进行了改进。 我想分享我们的发现! 基准制定 当我们开始为该用例运行一个…

今晚课题:2019-3-23

今晚课题剖析《服务器高并发-IOCP模型架构》上课时间:2019/03/23 20:30--22:30授课讲师:杰越教育C/C学院--Vico课程链接:https://ke.qq.com/course/353889?tuin7472c9c 课程内容: 1、C/C编程语言入门精通 2、C线程技术在服务器…

使用Selenium WebDriver测试自动化的22条实用技巧

使用Selenium进行测试自动化已使全球的网站测试人员能够轻松执行自动化的网站测试。 Webdriver是Selenium框架的核心组件,通过它您可以针对不同类型的浏览器(例如Google Chrome,Mozilla Firefox,Safari,Opera&#xff…

java编译源文件_Java源文件编译示例

java程序编译java源文件JavacCompile文件:package yan.demo.javac;import java.io.File;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import javax.tools.Diagnostic;import javax.tools.DiagnosticCollector;import javax.tools.Fi…

这么奇葩搞笑的代码注释你见过吗

程序员作为一种“异类”,虽然他们平时给人们的留下的印象并不太好,觉得他们只会写代码。但是有的时候不得不佩服他们天马行空的想象力,他们可能会利用注释让你噗嗤一笑,下面我们来看看那些奇葩搞笑的代码注释吧。注释1&#xff1a…

facelets_不要在facelets中重复表情

facelets您是否曾经在JSF中看到过像这样的重复EL表达式&#xff1f; <h:inputText value"#{oneBean.name}" rendered"#{anotherBean.showPerson}"/> <h:inputText value"#{oneBean.birthday}" rendered"#{anotherBean.showPerson…

C语言与Java的深情对话:儿子,还得多练几年啊!老子还是老子

很多小伙伴都老是会碰到疑问&#xff0c;其实还是基础没打扎实&#xff0c;这些题如果你不看答案你能知道多少呢&#xff1f;如果还有很多不知道就证明基础没打扎实&#xff0c;如果你还在入门纠结&#xff0c;如果你还在苦恼怎么入门&#xff01;小编有个建议&#xff0c;可以…

Servlet和JSP之间的区别

JSP和Servlet都是与使用Java构建基于Web的应用程序有关的重要概念。 基本上&#xff0c;Servlet是Java中HTML&#xff0c;而JSP是HTML中的Java。 任何典型的Web开发面试都可能有几个基于JSP和Servlet的Java面试问题 。 尽管JSP和Servlet的主要目的是相同的&#xff0c;但是两者…

BAT人脸识别功能第二步-人脸检测

今晚课题点击【阅读原文】或长按图片【识别图中的二维码】即可参加今晚的课程。

java emptylist_Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方...

先说明一下好处有哪些&#xff1a;1&#xff0c;如果你想 new 一个空的 List &#xff0c;而这个 List 以后也不会再添加元素&#xff0c;那么就用 Collections.emptyList() 好了。new ArrayList() 或者 new LinkedList() 在创建的时候有会有初始大小&#xff0c;多少会占用一内…

java中插入排序实例_java中对插入排序的理解以及实例

一、基本思想通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时&#xff0c;左手是空的&#xff0c;牌面朝下放在桌上。接着&#xff0c;一次从桌上摸起一张牌&a…

hazelcast入门教程_Hazelcast入门指南第3部分

hazelcast入门教程这是从初学者的角度来看一系列有关如何使用Hazelcast的文章的延续。 如果您还没有阅读最后两个&#xff0c;我鼓励阅读它们&#xff1a; Hazelcast入门指南第1部分 Hazelcast入门指南第2部分 原始人来了 在上一篇文章中&#xff0c;我提到将ILock与IList和…