[英]Which way is better/proper to compare to objects?
我正在編寫用於使用specflow測試REST服務的測試。 測試的主題是檢查我從服務獲得的列表是否包含正確的對象。
我在后台部分有示例數據,該數據在每次運行時都會放入數據庫中,並且每次運行后都會被清理。 關鍵是我知道數據庫中的確切數據和應該比較的對象是DTO類。
在測試中,我必須比較請求調用的結果(反序列化的JSON字符串到List<DTOObject>
),REST服務url和測試數據(填充的List<DTOObject>
)。 所以,我有兩個List<DTOObject>
。 問題是哪種方法比較它們更好?
A,我編寫了一個通用的比較器類(我不想在我的測試庫和應用程序之間建立依賴關系),步驟是
B,
目前,我有兩個想法。 我已經讀過一些關於比較的文章,並且我不想使其變得比需要的更為復雜。 我的意思是,實現IComparable接口,覆蓋GetHashCode方法。 另一方面,我不確定DTO類是否實現用於測試的接口會很好。
也許我沒有讀足夠的書,或者我太接近這個問題了。 我想請您回顧一下我的兩種可能的方法-我絕對不確定它們是否正確-如果您知道有關此問題的文章,請與我分享。 我不需要現有的解決方案-不熟練地使用他人的代碼不是我的方式-我需要提示要去哪里。
文章:
謝謝您的幫助!
為了比較對象本身,您應該覆蓋Equals()
方法。 如果在某個時間點您的對象可能被用作Dictionary或類似內容中的鍵的可能性很小,則也重寫GetHashCode()
。
然后,您可以使用Enumerable.SequenceEqual()
檢查兩個列表的相等性。 除了在對象上實現Equals
,您還可以創建IEqualityComparer<DTOObject>
並將其傳遞給SequenceEqual
調用,但是我認為實現Equals
是更通用的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.