Заставить AssertJ обрабатывать классы как объекты, а не как элементы типа Iterables - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь использовать isEqualToComparingFieldByFieldRecurursly из AssertJ для сравнения HSSFWorkbook s из Apache POI

Однако, когда я пытаюсь использовать его с HSSFWorkbook, он неработа:

    HSSFWorkbook wb1 = new HSSFWorkbook();
    HSSFWorkbook wb2 = new HSSFWorkbook();

    assertThat(wb1).isEqualToComparingFieldByFieldRecursively(wb2);

Я не могу использовать метод isEqualToComparingFieldByFieldRecursively: enter image description here

Похоже, что HSSFWorkbook реализует Iterable assertThat (wb1) возвращает IterableAssertкоторый не имеет isEqualToComparingFieldByFieldRecursively, как ObjectAssert делает.

Если я приведу HSSFWorkbook к Object, он будет действовать правильно, но такая же проблема возникает для других классов Apache POI (HSSFSheet и HSSFRow).Каков самый чистый способ заставить AssertJ использовать только ObjectAssert?

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете попробовать usingRecursiveFieldByFieldElementComparator, он должен быть доступен как HSSFWorkbook Iterable.

Если это не работает, вы можете добавить комментарийhttps://github.com/joel-costigliola/assertj-core/issues/1002, чтобы получить поддержку вашего варианта использования в следующем API рекурсивного сравнения для AssertJ.

...