- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
在單元測試使用 Assert.Equal 比較兩個物件時無法通過驗證
範例程式碼可以在此取得
net-core-xunit-test-compare-generics-type
單元測試專案使用「xUnit 單元測試專案(.NET Core)」,類別庫專案使用「.NET Standard 2.0 類別庫專案」。
撰寫單元測試有些情境會要確認取得的物件集合是否符預期:取得有效的使用者清單、被鎖定的帳號清單 ... 等。
取得物件集合後,在 xUnit 會使用 Assert.Equal 方法來確認物件是否符合預期。
範例程式碼為模擬取得有價證劵清單的程式碼片段,在單元測試中判斷取得的有價證券清單是否符合預期。

執行測試後發現比對結果並不相符,取得測試失敗的紅燈,但輸出內容其實是符合的。

複寫 Equals 與 GetHashCode
複寫值物件的 Equals 與 GetHashCode 方法,在進行物件比較時 Assert.Equal 可以正確的判斷兩個物件是否相同。
範例程式碼在 Stock 類別覆寫 Equals 與 GetHoshCode 進行 Id、ISIN、Code 與 Name 比較。

部分情境中並非所有屬性都要拿來做相等判斷,就可以在 Equals 方法中指定相等的內容。
複寫完成後重新執行單元測試:取得通過測試的綠燈!

留言
張貼留言