AssertJ


プロジェクトコラボレーションの過程で、チームメンバーの一人が私を助けたときに見たことのないコード
書いてあったので気になって探してみました次の文章を整理しすぎた人がいたので参考にしました.
assertJ?
Javaテストでは、スムーズで豊富な断言を作成するために使用されます.
オープンソースコミュニティベースのライブラリ
サポート
Standard Java
Java 8
Guava
Joda Time
Neo4J and
Swing components
サポートの作成
Assertions.オブジェクトをassertThat()に渡すと、断言を受け取ることができます.
Obejct Assertions
Obejctは、複数の方法で比較して、2つのオブジェクトの同一性またはオブジェクトのフィールドを調べることができる.
Example
2つのDogオブジェクトfidoとfidoCloneが与えられた場合
public class Dog {
private String name;
private Float weight;
// standard getters and setters
}
Dog fido = new Dog("Fido", 5.25);
Dog fidosClone = new Dog("Fido", 5.25);
assertThatを使用して比較します.
assertThat(fido).isEqualTo(fidosClone);
ただしisEqualsTo()はオブジェクトの参照を比較するため失敗します.
コンテンツを比較するには、i s E q u a l T o C o m paringFieldByFieldRecursive()を使用します.
assertThat(fido).isEqualToComparingFieldByFieldRecursively(fidosClone);
参考▼▼プログラミングの時にFairに聞くと、assertEqualsよりもassertThatの方が直感的なので、できるだけassertThat()を使うようにしています.
Boolean Assertions
isTrue()
isFalse()
assertThat("".isEmpty()).isTrue();
Iterable/Array Assertions
Iterable/Arrayに特定の要素が存在するかどうかは、さまざまな方法で知ることができます.
ここでは、特定の要素が含まれているかどうかを決定します.
  • List<.String> list = Arrays.asList("1", "2", "3");
  • assertThat(list).contains("1");
    Example
    リストは空ではありません.
    assertThat(list).isNotEmpty();
    listは所定の文字で始まる.
    assertThat(list).startsWith("1");
    同じオブジェクトに1つ以上のブレークスルーを作成する場合は、フィルタを使用して簡単にマージできます.
    assertThat(list)
    .isNotEmpty()
    .contains("1")
    .doesNotContainNull()
    .containsSequence("2", "3");
    Character Assertions
    Characterのアサーションは、比較文字がUnicodeテーブルにあるかどうかを確認するために使用されます.
    仕事を含める.
    Example
    「a」ではなくUnicodeテーブルに文字があるかどうか、および「b」および小文字よりも文字が大きいかどうかを確認する断言です.
    assertThat(someCharacter)
    .isNotEqualTo('a')
    .inUnicode()
    .isGreaterThanOrEqualTo('b')
    .isLowerCase();
    Class Assertions
    フィールド、クラスタイプ、コメントの存在などを確認します.
    Example
    クラスが実行可能であることを確認します
    assertThat(Runnable.class).isInterface();
    クラスが別のクラスに割り当てられることを確認します.
    assertThat(Exception.class).isAssignableFrom(NoSuchElementException.class);
    File Assertions
    指定したファイルインスタンスが存在するかどうか、ディレクトリまたはファイル.
    特定のコンテンツがあるかどうか、読み取り可能かどうか、または拡張子があるかどうかを確認します.
    Example
    ファイルが存在し、ディレクトリではなく、読み書き可能であることを確認します.
    assertThat(someFile)
    .exists()
    .isFile()
    .canRead()
    .canWrite();
    Double/Float/Integer Assertions
    数値値は、指定されたOffset内または指定されたOffset内で比較されます.
    assertThat(5.1).isEqualTo(5, withPrecision(1d));
    InputStream Assertions
    hasSameContentAs(InputStream expected)
    assertThat(given).hasSameContentAs(expected);
    Map Assertions
    マッピングに特定のアイテム、entry、key/value値が含まれていることを確認します.
    Example
    マッピングが空でなく、キー2が含まれ、キー10が含まれていないことを確認します(2,「a」)
    assertThat(map)
    .isNotEmpty()
    .containsKey(2)
    .doesNotContainKeys(10)
    .contains(entry(2, "a"));
    Throwable Assertions
    例外メッセージ、スタックトラッキングチェック、および例外が放出されたかどうかを確認します.
    Example
    指定された例外が発生したかどうかを確認し、「c」で終わるメッセージがあるかどうかを確認します.
    assertThat(ex).hasNoCause().hasMessageEndingWith("c");
    トレーニングで、この変換可能なサポートに異常がないかどうかを確認します.
    assertThrownbyとassertThatExceptionOfTypeの2つの方法で処理できます.
    assertThrownby():Java 8異常断言標準スタイル
    assertThatExceptionOfType():例外クラスを入れる
    @Test
    @DisplayName(「特定の場所の文字を取得」)
    public void charGetFromString1() {
    String name = "Fortune";
    int index = 10;
    assertThatThrownBy(() -> {
        name.charAt(index);
    }).isInstanceOf(IndexOutOfBoundsException.class)
            .hasMessageContaining("%d", index);
    }
    @Test
    @DisplayName(「特定の場所の文字をインポート」)
    public void charGetFromString2() {
    String name = "Fortune";
    int index = 10;
    assertThatExceptionOfType(IndexOutOfBoundsException.class)
            .isThrownBy(() -> {
                name.charAt(index);
            }).withMessageContaining("%d", index);
    }
    Java 8でもっと役に立ちます...
    java7
    assertThat(fellowshipOfTheRing)
    .filteredOn("race", HOBBIT)
    .containsOnly(sam, frodo, pippin, merry);
    java8
    assertThat(fellowshipOfTheRing)
    .filteredOn(character -> character.getRace().equals(HOBBIT))
    .containsOnly(sam, frodo, pippin, merry);
    ソース:https://velog.io/@new_wisdom/assertJ-%EA%B3%B5%EC%8B%9D%EB%AC%B8%EC%84%9C%EC%99%80-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-assertJ-%EC%A0%95%EB%A6%AC