[英]NUnit's Assert.Equals throws exception "Assert.Equals should not be used for assertions"
[英]Assert.Equals of Two objects implementing IEquatable(T) doesn't use the equals method
我有一個實現IEquatable(Type)的自定義類型Type。 然后我新建了兩個類型的實例,它們都不是Null
Assert.IsTrue(obj1.equals(obj2)) //Success
Assert.AreEqual(obj1, obj2) //False
Assert.AreEqual(Type)(obj1, obj2) //False
第一個命中我的等號,第二個擊中ToString()任何建議?
更新
一些代碼來說明: http : //pastebin.com/1uecrfeW
更多更新
如果我必須覆蓋基數等於,即使有更好的(通用)等於,那么實現IEquals(T)的用途是什么?
我的猜測是它實際上擊中了Equals(object)
而不是Equals(T)
。 如果你還沒有重寫Equals(object)
那么它可能會使斷言失敗,然后使用ToString
創建一個有用的失敗消息。
如果你能展示一個簡短而完整的程序來演示問題(包括你正在調用的Assert
方法 - NUnit?還有其他什么?)這會有所幫助。
IIRC Assert.AreEqual是非泛型的,因此只有object.Equals適用; 嘗試檢查非泛型object.Equals的覆蓋。
除了通過反射調用泛型方法的不便之外,對象還可以實現多個 IEquatable<T>
(針對不同的T)。 所以非通用版本在這里有意義,IMO。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.