[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");