Junit 断言 assertThat, assertEquals, assertTrue
2017-09-14 11:11
459 查看
我们想从断言里获得什么
对于测试里的断言,我们想从中获得什么呢?测试失败后仅仅显示一个红色条并不是我们想要的,除此之外我们还想从测试中获得一些信息:1、哪里的测试失败了,有代码行么?这个所有的断言都能提供这个功能2、测试为什么失败 这个就很难界定了。大部分断言都能提供类似这种功能:期望的结果 vs 实际的结果但是不同的断言提供的信息却不尽相同。还有一些问题,用简单的相等之类的断言是很难比较的。而且,断言还有一个非常重要的作用:文档。也就是,当你阅读测试代码时,看到断言你就像是看到了所有的期望。而且非常明了的期望。实际的例子
看看assertThat的第二个参数,它接受的是一个Matcher<T>,在org.hamcrest里有非常丰富的Matcher实现。比如现在我们的API返回一个用户对象的列表,我们想断言这个列表里包含我们期望的一个用户,hamcrest里就有hasItem这么一个Matcher:1: assertThat(userDAO.findAll(), hasItem(expected));如果用其他断言该怎么做?
1: assertTrue(userDAO.findAll().contains(expected));好,这就是问题所在,如果上面两个断言都失败了,第一个断言的失败信息将是:期望结果中包含expected….但是实际上…这里会把findAll返回的所有user都打印出来而第二个断言呢?是这样的:期望为true,实际上为false请问哪一个更靠谱一点?显然第一个断言的失败信息更利于我们寻找问题。对于文档化,我们再来看这么一个要求:断言返回的用户列表里不包含给定的用户:
assertThat(userDAO.findAll(), not(hasItem(expected));
assertFalse(userDAO.findAll().contains(expected));
assertEquals(userDAO.findBy(id), expected);
assertThat(userDAO.findBy(id), is(expected));
相关文章推荐
- JUnit【1】断言用法之assertEquals/True/False/ArrayEquals
- junit 断言assertThat使用
- JUnit中使用Hamcrest测试框架的assertThat断言【4.4新特性】
- JUnit中使用Hamcrest测试框架的assertThat断言
- JUnit中使用Hamcrest测试框架的assertThat断言【4.4新特性】
- JUnit assertEquals 两个对象或集合类型
- junit的assertThat
- 关于 assertThat, assertEquals, assertTrue
- JUnit中assertEquals和assertSame方法的不同
- JUnit4中使用Hamcrest测试框架的assertThat断言 小实例
- Junit4中的新断言assertThat的是用方法
- JUnit之断言assert
- 学习使用TestNG中的断言(Assertion) (1) ——Assertion概述与assertEquals方法简介
- junit内Assert.assertEquals的含义
- Junit Assert.assertEquals中的delta用法
- JUnit assertEquals 两个对象或集合类型
- JUnit 测试-Assert断言相关方法简析
- JUnit中assertEquals和assertSame方法的不同
- JUnit中assertEquals和assertSame方法的不同
- JUnit中assertEquals和assertSame方法的不同