簡體   English   中英

如何在測試代碼中測試 Hibernate object 是否相等?

[英]How to test Hibernate object equality in test code?

我有一個 Hibernate class,我沒有在上面實現 equals 方法。

我的服務層有很多方法返回這個 class。

例如,我的服務層方法之一是:

public List<User> getUsers() {
    return this.userRepository.findAll();
}

User只是

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "email", nullable = false)
    private String email;
}

在我的測試代碼中,我想斷言服務方法返回的對象與我希望它們返回的對象之間的相等性。

然而,在 Hibernate class 上實現一個 equals 方法是沒有意義的,它檢查所有字段是否相等(如JPA hashCode() / equals() 困境中所討論的)。

目前為了解決這個問題,我正在將我的 Hibernate class 轉換為 class,它確實有一個 equals 方法來檢查每個字段是否相等。 它有效,但不太優雅。

有一個更好的方法嗎?

如果您使用的是assertj ,則可以使用內置的遞歸比較方法進行逐字段比較,而不是使用equals方法比較。 例如:

assertThat(result).usingRecursiveComparison().isEqualTo(expected);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM