[AssertJ]サポート(assertThrownbyの追加が必要)


AssertJはJavaテストで使用されるライブラリです.

Writing Assertions


累積を使用するには、Assertions.assertThat()にオブジェクトを渡す必要があります.
他のライブラリとは異なり、次のコードは実際には何も断言せず、テストに失敗することはありません.
// 추가 시 'Assertions.' 생략 가능
import static org.assertj.core.api.Assertions.*;

assertThat(ansyReferenceOrValue);

Object Assertions


オブジェクトは、さまざまな方法で比較できます.
ここでは、2つのオブジェクトが同じかどうかを判断する方法を2つ紹介します.
1. isEqualTo
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(fido).isEqualTo(fidosClone);
isEqualTo()は、比較対象の参照により失敗した.
対象の内容を比較したい場合は、isEqualToComparingFieldByFieldRecursively()を使用します.
2. isEqulaToComparingFieldByFieldRecursively()
assertThat(fido).isEqualToComparingFieldByFieldRecursively(fidosClone);

Boolean Assertions


真偽を判断できる.
  • isTrue()
  • isFalse()
  • assertThat("".isEmpty()).isTrue();

    Iterable/Array Assertions


    IterableまたはArrayのassertメソッド
    1.指定された要素が含まれているかどうか
    List<String> list = Arrays.asList("1", "2", "3");
    
    assertThat(list).contains("1");
  • は空ですか
  • assertThat(list).isNotEmpty();
  • は、与えられた要素で始まるか、
  • であるか.
    assertThat(list).startsWith("1");
    1つのオブジェクトに対して、複数のブレークスルーを簡単にマージできます.
    assertThat(list)
      .isNotEmpty()
      .contains("1")
      .doesNotContainNull()
      .containsSequence("2", "3");

    Character Assertions


    文字を比較したり、Unicodeであることを確認したりすることができます.
    assertThat(someCharacter)
      .isNotEqualTo('a')			// a가 아닌지
      .inUnicode()					// 유니코드인지
      .isGreaterThanOrEqualTo('b')	// 'b'보다 크고
      .isLowerCase();				// 소문자인지

    Class Assertions


    クラスブレークスルーの大部分は、フィールド、クラスタイプ、宣言、クラスの終了性に関する確認です.
    // Runnalbe 클래스가 인터페이스인지 확인
    assertThat(Runnable.class).isInterface();
    
    // 한 클래스가 다른 클래스에 할당 가능한지
    assertThat(Exception.class).isAssignableFrom(NoSuchElementException.class);
    このほか、ファイル、数値、入力ストリーム、Throwableなどにも使用できます.

    AssertThatThrownBy


    https://assertj.github.io/doc/#assertj-core-exception-assertions-assertThatThrownBy

    Describing Assertions

    asを使用して、アサーションをカスタマイズできます.
  • as(String description, Object... args)
  • assertThat(person.getAge())
    	.as("%s's age should be equal to 100", person.getName())
        .isEqualTo(100);
    上記のように定義すると、以下のテスト結果が得られます.[nakkim's age should be equal to 100] expected:<100> but was: <34>

    Java 8


    AssertJはJava 8の関数式プログラミング機能を使用することができる.
    // Java 7
    assertThat(fellowshipOfTheRing)
      .filteredOn("race", HOBBIT)
      .containsOnly(sam, frodo, pippin, merry);
    
    // Java 8
    assertThat(fellowshipOfTheRing)
      .filteredOn(character -> character.getRace().equals(HOBBIT))
      .containsOnly(sam, frodo, pippin, merry);
    リファレンス
    https://www.baeldung.com/introduction-to-assertj