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

走进Java接口测试之流式断言库AssertJ

Java 6或更高版本 请注意,AssertJ 3.x包含所有AssertJ 2.x功能,并添加了Java 8特定功能(如 lambdas 的异常断言) AssertJ 支持如下模块: Core:AssertJ...如果你想断言Runnable类是一个接口,你需要简单地写: assertThat(Runnable.class).isInterface(); 或者如果你想检查一个类是否可以从另一个类中分配: assertThat...你可以看到断言的示例,该断言检查给定的Map是否为空,包含key “2”,不包含数字键“10”并包含条目:key:2,value:“a”: assertThat(map) .isNotEmpty()...让我们看一下断言示例,该断言检查是否抛出了给定的异常并且消息以“c”结尾: assertThat(ex).hasNoCause().hasMessageEndingWith("c"); 有关更多断言,请参阅...“c”结尾 assertThat(ex).hasNoCause().hasMessageEndingWith("c"); } 描述断言 为了获得更高的详细级别,你可以为断言创建动态生成的自定义描述

1.2K00

走进Java接口测试之流式断言库AssertJ

Java 6或更高版本 请注意,AssertJ 3.x包含所有AssertJ 2.x功能,并添加了Java 8特定功能(如 lambdas 的异常断言) AssertJ 支持如下模块: Core:AssertJ...如果你想断言Runnable类是一个接口,你需要简单地写: assertThat(Runnable.class).isInterface(); 或者如果你想检查一个类是否可以从另一个类中分配: assertThat...你可以看到断言的示例,该断言检查给定的Map是否为空,包含key “2”,不包含数字键“10”并包含条目:key:2,value:“a”: assertThat(map) .isNotEmpty()...让我们看一下断言示例,该断言检查是否抛出了给定的异常并且消息以“c”结尾: assertThat(ex).hasNoCause().hasMessageEndingWith("c"); 有关更多断言,请参阅...“c”结尾 assertThat(ex).hasNoCause().hasMessageEndingWith("c"); } 描述断言 为了获得更高的详细级别,你可以为断言创建动态生成的自定义描述

3.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

秒懂如何使用SpringBoot+Junit4进行单元测试

column().value().isEqualTo(1); } } 如果你不想使用SpringBoot的数据源,需要自定义数据源,那么可以在测试类中这么写: public class SystemInfoDaoTest...关于这些常用功能的详细案例,可以参考文末的Assertj-DB文档。 PS: 实验表明,对于事务回滚控制的测试用例,assertJ-DB似乎并不能得到我们想要的结果。...如下案例中,测试用例是事务回滚的,但是使用JdbcTemplate可以得到正确的结果,但是使用assertJ-DB就不行了。只能针对非事务回滚的测试用例,assertJ-DB才能得到正确的结果。...java-faker,可以对生活中常用的事物进行造数,使用简单,但无法满足复杂对象的造数; easy-random,可以对复杂对象进行造数,而且可以自定义造数的值类型和范围; jmockdata,可以对复杂对象进行造数...,而且可以自定义造数的值类型和范围; 这些工具库的使用都非常简单,参考文末列出的官方文档看下即可。

1.7K30

Java 单元测试获取目标日志内容进行断言的推荐姿势

(运行单元测试时,通常不会输出到控制台,通常很多同学会临时在目标对象里添加打印语句,测试通过后删除,非常麻烦) 自己瞎想下: 可以自己实现 Logger 接口或者封装一个 LoggerWrapper...; } } 单元测试: import static org.assertj.core.api.Assertions.assertThat; import nl.altindag.log.LogCaptor...; } } 测试日志级别 import static org.assertj.core.api.Assertions.assertThat; import nl.altindag.log.LogCaptor...; } } 异常日志断言 import static org.assertj.core.api.Assertions.assertThat; import nl.altindag.log.LogCaptor...三、总结 大家在开发时,遇到无法满足的场景时,优先寻找是否有前人已经很好地解决了该问题。 一方面可以验证自己的想法是否靠谱。

1.3K10

Java 单元测试获取目标日志内容进行断言的推荐姿势

为我们自定义的 Logger类 在调用日志的方法时,将对应的内容存储到成员变量容器中 后面断言或者打印时,取出来即可。...; } } 单元测试: import static org.assertj.core.api.Assertions.assertThat; import nl.altindag.log.LogCaptor...; } } 异常日志断言 import static org.assertj.core.api.Assertions.assertThat; import nl.altindag.log.LogCaptor...三、总结 大家在开发时,遇到无法满足的场景时,优先寻找是否有前人已经很好地解决了该问题。 一方面可以验证自己的想法是否靠谱。...另外一方面,即使对方没有很好地解决,也可以参考他人的思路,自己再进行改进。 你是否有更好的方法,欢迎留言和我讨论。

81520

五年了,你还在用junit4吗?

并且每个静态内部类都可以有自己的生命周期方法, 这些方法将按从外到内层次顺序执行。 此外,嵌套的类也可以用@DisplayName 标记,这样我们就可以使用正确的测试名称。...这带来了更大的灵活性,并为构造函数和方法启用依赖注入 TestInfo可获取测试信息 TestReporter可以控制台输出信息 @Test @DisplayName("test-first") @Tag...(person.getName() + "-test", () -> assertTrue(person.getName().contains("niu")))); } 超时测试 通过时间来验证用例是否超时...@ArgumentsSource自定义自己的数据来源,必须封装成去取JSON或者XMl等数据 AssertJ 当定义好需要运行的测试方法后,下一步则是需要关注测试方法的细节,这就离不开断言和假设 断言:...想想如果没有使用AssertJ时我们是如何写断言的,是不是需要多个assert,很繁琐 AssertJ的断言代码清爽很多,流式断言充分利用了java8之后的匿名方法和stream类型的特点,很好的对Junit

1.5K40

使用Spring Boot进行单元测试

编写好的单元测试可以被看成一个很难掌握的艺术。但好消息是支持单元测试的机制很容易学习。 本文给你提供在Spring Boot 应用程序中编写好的单元测试的机制,并且深入技术细节。...创建可读断言 Spring Boot 测试包自动附带的另一个库是AssertJ。...所以,让我们在test/sources中创建我们自定义的断言吧: class UserAssert extends AbstractAssert { UserAssert...库直接导入,而是从我们自定义断言类UserAssert引入assertThat方法的话,我们就可以使用新的、更可读的断言。...创建一个这样自定义的断言类看起来很费时间,但是其实几分钟就完成了。我相信,将这些时间投入到创建可读性强的测试代码中是值得的,即使之后它的可读性只有一点点提高。

2.4K30

测试断言哪家强?

当然,由于以AssertJ为代表的“新新一代”断言工具的出现以及蓬勃发展,Hamcrest又被移除出了Junit5[2], 让测试框架的使用者们可以更加自由的选择断言工具,促进Junit生态圈的发展。...当测试用例中出现了if这样的判断来决定测试用例的执行路径时,就需要考虑是否引入哨兵断言了。这样就可以在测试用例用引入测试逻辑。 ?...如HTTP restful的接口,其HTTP状态码(HTTP Status Code)应该都是200,表示消息传输正常。...因此,我们可以通过验证该账户转账前后的资金差异来确定结果是否准确。...直接验证返回结果 如前一小节中转账的案例, assertThat(api.trans(1,"aaa","bbb")).isEqualto("OK"); 通过直接验证方法的返回值,可以对结果进行直接验证

1.8K20
领券