簡體   English   中英

VB.NET 中的問題單元測試

[英]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 的引用類型,因此:

來自Object.Equals 方法

Equals 的默認實現支持引用類型的引用相等,以及值類型的按位相等。 引用相等意味着被比較的 object 引用引用相同的 object。 按位相等意味着被比較的對象具有相同的二進制表示。

在什么意義上這兩個條目相等? 他們的 ToString() 是否相等? 如果這足以認為它們在測試中相等,則將兩個 ToString() 值相互比較。

如果您需要比較兩個 DirectoryEntries,請實現自定義 IEqualityComparer 並使用它來比較測試中的相等性。

暫無
暫無

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

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