Spring Boot + JavaプロジェクトでAssertJを用いて 指定したプロパティを除外してオブジェクトを比較する

2020年7月12日

AssertJで指定したプロパティを比較条件から除外する

 JUnitを使ったテスト時Beanの各プロパティが期待結果となっているか検証したいが、特定のプロパティ検証対象外にしたい。例えば、下記のBookクラスのidは比較対象にしたい。


import lombok.Data;

@Data
public class Book {
    private int id;
    private String name;
    private String author;
}

AssertJ での解決方法

 isEqualToIgnoringGivenFields(Object other, String… propertiesOrFieldsToIgnore) メソッドを使用し比較対象外とするプロパティを指定する。
公式ドキュメント
下記のように使用する。



import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;

public class ObjectTest {

    @Test
    public void test1() {
        Book book1 = new Book();
        book1.setId(1);
        book1.setName("book1");
        book1.setAuthor("hoge");
        Book book2 = new Book();
        book2.setId(1);
        book2.setName("book1");
        book2.setAuthor("hoge2");
        assertThat(book1).isEqualToIgnoringGivenFields(book2, "author");
    }
}