Java 当类字段是集合时,使用RecursiveComparison的AssertJ失败 班级人员{ 私人名单电话; } 班级电话{ 私有字符串编号; } assertThat(result).usingRecursiveComparison() .ignoringCollectionOrder() .isEqualTo(预期人员);

Java 当类字段是集合时,使用RecursiveComparison的AssertJ失败 班级人员{ 私人名单电话; } 班级电话{ 私有字符串编号; } assertThat(result).usingRecursiveComparison() .ignoringCollectionOrder() .isEqualTo(预期人员);,java,unit-testing,junit5,assertj,Java,Unit Testing,Junit5,Assertj,expectedPerson具有相同的电话号码和电话号码,但测试失败,因为列表引用不相同。如果我没有记错,使用递归比较只会比较值。那么为什么它会失败呢?不幸的是,它无法重现您的问题 我想可能是版本冲突或其他环境问题。例如,以下代码段按预期工作: class Person { private List<Phone> phones; } class Phone { private String number; } assertThat(result).usingRecursiv

expectedPerson
具有相同的电话号码和电话号码,但测试失败,因为列表引用不相同。如果我没有记错,
使用递归比较
只会比较值。那么为什么它会失败呢?

不幸的是,它无法重现您的问题

我想可能是版本冲突或其他环境问题。例如,以下代码段按预期工作:

class Person {
  private List<Phone> phones;
}
class Phone {
  private String number;
}

assertThat(result).usingRecursiveComparison()
        .ignoringCollectionOrder()
        .isEqualTo(expectedPerson);

不幸的是,我无法重现你的问题

我想可能是版本冲突或其他环境问题。例如,以下代码段按预期工作:

class Person {
  private List<Phone> phones;
}
class Phone {
  private String number;
}

assertThat(result).usingRecursiveComparison()
        .ignoringCollectionOrder()
        .isEqualTo(expectedPerson);
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.4.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-params</artifactId>
      <version>5.4.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <version>3.17.2</version>
      <scope>test</scope>
    </dependency>