AssertJ断言实例

来源:互联网 发布:大国崛起 英国 知乎 编辑:程序博客网 时间:2024/05/21 08:57

本文转载自:《AssertJ:支持流式断言的Java测试框架

首先通过MAVEN引入相关JAR包

<dependency>
  <groupId>org.assertj</groupId>
  <artifactId>assertj-core</artifactId>
  <!-- use 2.4.1 for Java 7 projects -->
  <version>3.4.1</version>
  <scope>test</scope>
</dependency>

// 为所有assertThat和工具方法提供唯一访问入口(例如entry)

import static org.assertj.core.api.Assertions.*;
// 下面的示例中,fellowshipOfTheRing是一个TolkienCharacter列表
// 简单断言
assertThat(frodo.getName()).isEqualTo("Frodo");
assertThat(frodo).isNotEqualTo(sauron)
                 .isIn(fellowshipOfTheRing);
// String断言
assertThat(frodo.getName()).startsWith("Fro")
                           .endsWith("do")
                           .isEqualToIgnoringCase("frodo");
// 集合断言
assertThat(fellowshipOfTheRing).hasSize(9)
                               .contains(frodo, sam)
                               .doesNotContain(sauron);
// 使用extracting特性检查fellowshipOfTheRing中的名字:)
assertThat(fellowshipOfTheRing).extracting("name").contains("Boromir", "Gandalf", "Frodo", "Legolas")
                                                  .doesNotContain("Sauron", "Elrond");
// Java 8方式的extracting
assertThat(fellowshipOfTheRing).extracting(character -> character.getRace().getName())
                               .contains("Hobbit", "Elf")               
                               .doesNotContain("Orc");                                                 
// 断言之前过滤集合
assertThat(fellowshipOfTheRing).filteredOn("race", HOBBIT)
                               .containsOnly(sam, frodo, pippin, merry);
// 使用Java 8 lambda predicate过滤集合
assertThat(fellowshipOfTheRing).filteredOn(character -> character.getName().contains("o"))
                               .containsOnly(aragorn, frodo, legolas, boromir);
// 将extraction和过滤结合(是的,我们可以做到)
assertThat(fellowshipOfTheRing).filteredOn(character -> character.getName().contains("o"))
                               .containsOnly(aragorn, frodo, legolas, boromir)
                               .extracting(character -> character.getRace().getName())
                               .contains("Hobbit", "Elf", "Man");
// 支持多种其它断言:map、日期(Java 7和Java 8)、文件、数字、异常断言等
0 0