前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AssertJ 断言框架用法总结

AssertJ 断言框架用法总结

作者头像
林万程
发布2020-02-24 12:35:15
1.1K0
发布2020-02-24 12:35:15
举报
文章被收录于专栏:IT开发技术与工作效率

[TOC]

AssertJ 断言

代码语言:javascript
复制
<dependency>
  <groupId>org.assertj</groupId>
  <artifactId>assertj-core</artifactId>
  <!-- use 2.9.1 for Java 7 projects -->
  <version>3.15.0</version>
  <scope>test</scope>
</dependency>
代码语言:javascript
复制
import static org.assertj.core.api.Assertions.*;

// 假设条件,满足则继续执行
assumeThat(frodo.getRace()).isNotEqualTo(ORC);
// 设置错误消息必须在调用断言之前完成
assertThat(frodo.getAge())
        .as("check %s's age", frodo.getName())
        .isNotNull().isNotZero().isGreaterThanOrEqualTo(80).isLessThan(200)
        .isPositive().isNotNegative()
        .isIn(Arrays.asList(100, 200));
// Output:
// [check Frodo's age] expected:<100> but was:<33>

时间

代码语言:javascript
复制
assertThat(dateTime)
        .isBefore("2004-12-13T21:39:45.618-08:00")
        .isAfterYear(2013)
        .isBetween("2018-01-01", "2018-08-31")
        .isInSameHourAs(new Date())
        .isToday();

文件和文件内容

代码语言:javascript
复制
assertThat(xFile).exists().isFile().isRelative();
assertThat(contentOf(xFile)).startsWith("The Truth").contains("Is Out").endsWith("There");

字段

代码语言:javascript
复制
assertThat(sherlock)
        .usingRecursiveComparison() // 只比较字段
        .withStrictTypeChecking() // 同时比较类型(可以是子类形)
        .ignoringFields("name", "home.address.street")
        .ignoringFieldsMatchingRegexes(".*me")
        .ignoringActualNullFields()
        .ignoringFieldsOfTypes(double.class, Address.class)
        .isEqualToIgnoringCase(sherlockClone);

软断言

代码语言:javascript
复制
try (AutoCloseableSoftAssertions softly = new AutoCloseableSoftAssertions()) {
    softly.assertThat("George Martin").as("great authors").isEqualTo("JRR Tolkien");  
    softly.assertThat(42).as("response to Everything").isGreaterThan(100); 
}

AssertJ-DB 断言数据库

代码语言:javascript
复制
<dependency>
  <groupId>org.assertj</groupId>
  <artifactId>assertj-db</artifactId>
  <version>1.3.0</version>
  <scope>test</scope>
</dependency>
代码语言:javascript
复制
import static org.assertj.db.api.Assertions.assertThat;

Source source = new Source("jdbc:h2:mem:test", "sa", "");
Table table = new Table(source, "members");
Request request = new Request(dataSource, 
        "select name, firstname from members " +
        "where name like ? and firstname like ?;",
        "%e%", "%Paul%");
// Check column "name" values
assertThat(tableOrRequest).column("name")
        .value().isEqualTo("Clayton")
        .value().isEqualTo("Mullen");
// Check row at index 1 (the second row) values
assertThat(tableOrRequest).row(1)
        .value().isEqualTo(2)
        .value().isEqualTo("Evans")
        .value().isEqualTo(DateValue.of(1961, 8, 8))
        .value().isEqualTo(1.77);

附:谷歌 Truth 用法

代码语言:javascript
复制
<dependency>
  <groupId>com.google.truth</groupId>
  <artifactId>truth</artifactId>
  <version>1.0.1</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>com.google.truth.extensions</groupId>
  <artifactId>truth-java8-extension</artifactId>
  <version>1.0.1</version>
  <scope>test</scope>
</dependency>
代码语言:javascript
复制
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import static com.google.common.truth.Truth8.assertThat;

assertThat(string).startsWith("awe");
assertWithMessage("Without me, it's just aweso").that(string).contains("me");
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • AssertJ 断言
    • 时间
      • 文件和文件内容
        • 字段
          • 软断言
          • AssertJ-DB 断言数据库
          • 附:谷歌 Truth 用法
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档