[英]Problem Unit Testing in VB.NET
我有以下代碼:
<TestMethod()> _
Public Sub GetDirectoryEntryTest()
Dim path As String = runner.getLDAPPath()
Dim expected As DirectoryEntry = runner.GetDirectoryEntry()
Dim actual As DirectoryEntry
actual = LDAPBase.GetDirectoryEntry(path)
Assert.AreEqual(expected, actual)
End Sub
此單元測試失敗。 DirectoryEntry
對象完全相同,但對不同對象的引用不同。 我來自 Java 背景,你總是有.equals()
。
我該怎么做才能正確評估並返回 true,因為對於所有意圖和目的,對象都是相等的。 有什么我可以像在 Java 中那樣做的事情並覆蓋 equals() 嗎?
嘗試將對象的路徑與以下內容進行比較:
Assert.AreEqual(expected.Path, actual.Path)
這將比較底層路徑(字符串類型)而不是 object 引用。 如果路徑相同就足夠了,你不應該覆蓋任何東西。
編輯:
DirectoryEntry 是從 Object 繼承 Equals 的引用類型,因此:
Equals 的默認實現支持引用類型的引用相等,以及值類型的按位相等。 引用相等意味着被比較的 object 引用引用相同的 object。 按位相等意味着被比較的對象具有相同的二進制表示。
在什么意義上這兩個條目相等? 他們的 ToString() 是否相等? 如果這足以認為它們在測試中相等,則將兩個 ToString() 值相互比較。
如果您需要比較兩個 DirectoryEntries,請實現自定義 IEqualityComparer 並使用它來比較測試中的相等性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.