预期的JUnit断言错误和实际显示的是同一件事

Dre*_*att 0 java junit

我在Assertionerror中的期望值和实际值都显示相同的内容。它们是相同的参考。有人知道为什么以及如何解决吗?下面的代码和错误。提前致谢:

@Test
public void test_CreateAUserWritesAFileReadsFilePrintsFile() throws IOException {
    //Arrange
    WriteCommand fwc = new FileWriteCommand();
    ReadCommand frc = new FileReadCommand();
    RegistrationController rc = new RegistrationController();
    User user = new User("Jerry", "123", "Engineer");
    rc.registerNewUser("Jerry", "123", "Engineer");
    fwc.writeUser(user);
    User one = frc.readUser("Jerry");
    System.out.println(one);
    User expected = one;

    //Act
    User actual = user;

    //Assert
    assertEquals(expected, actual);

}
Run Code Online (Sandbox Code Playgroud)

错误

java.lang.AssertionError: expected: com.fdmgroup.userregistration.User<User [username=Jerry, password=123, role=Engineer]> but was: com.fdmgroup.userregistration.User<User [username=Jerry, password=123, role=Engineer]>
Run Code Online (Sandbox Code Playgroud)

Vim*_*i_R 5

那是因为User user = new User("Jerry", "123", "Engineer");正在创建一个新的User对象,User one = frc.readUser("Jerry");并且还在创建一个新的User对象。这两个对象的字段值相同,但两个对象不同。但是,您可以通过执行此操作来断言。

assertThat(user).isEqualToComparingFieldByField(one);
Run Code Online (Sandbox Code Playgroud)