强制AssertJ将类视为对象而不是Iterables

时间:2018-09-29 20:33:18

标签: java apache-poi assertj

我正在尝试递归地使用AssertJ中的isEqualToComparingFieldByField来比较来自Apache POI的HSSFWorkbook s

但是,当我尝试将其与HSSFWorkbook结合使用时,它不起作用:

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

    assertThat(wb1).isEqualToComparingFieldByFieldRecursively(wb2);

我无法使用isEqualToComparingFieldByFieldRecursively方法: enter image description here

由于HSSFWorkbook实现了Iterable assertThat(wb1),因此它返回的IterableAssert不像 ObjectAssert 那样递归地具有isEqualToComparingFieldByField。

如果我将HSSFWorkbook强制转换为Object,它将以正确的方式运行,但其他Apache POI类(HSSFSheet和HSSFRow)也会出现相同的问题。强制AssertJ只使用ObjectAssert的最干净方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试usingRecursiveFieldByFieldElementComparator,因为HSSFWorkbookIterable,所以应该可以使用。

如果它不起作用,是否可以在https://github.com/joel-costigliola/assertj-core/issues/1002上添加注释,以在即将到来的AssertJ递归比较api中获得对您的用例的支持。