Java 比较复杂对象,不包括 JUnit 的某些字段

Har*_*ver 3 java comparison junit object

我尝试了 Unitils 工具,它真的很棒,但没有为您提供排除字段的选项。这样做的唯一方法是将对象设置为 null 并启用标志“IGNORE_DEFAULTS”,但在我的情况下它没有帮助,因为我有一些由系统自动生成的 ID。因此,如果我可以将 id 添加到排除列表中,那就太完美了。

我也尝试过 Mockito ReflectionEquals 但没有帮助,因为我需要一个字段到字段的比较。

还有其他有用的东西吗?我正在寻找数小时但没有成功。

先感谢您!

Fra*_*ung 9

您可以使用AssertJ解决您的问题。它可以使用按名称、正则表达式或类型忽略字段的选项进行逐字段递归比较

assertThat(sherlock)
  .usingRecursiveComparison()
  .ignoringFields("name", "home.address.street")
  .isEqualTo(moriarty);

Run Code Online (Sandbox Code Playgroud)


Jos*_*son -2

如果您不喜欢您所发现的功能,那么使用 java 反射来推出您自己的产品并不困难。