Spring Boot + JavaプロジェクトでAssertJを用いて 指定したプロパティを除外してオブジェクトを比較する
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");
}
}