VB.NET中的问题单元测试

use*_*041 5 .net vb.net unit-testing

我有以下代码:

<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
Run Code Online (Sandbox Code Playgroud)

此单元测试失败.该DirectoryEntry对象是完全不同的对象相同,但不同的引用.我来自Java背景,你总是拥有.equals().

我能做什么才能正确评估并返回true,因为对于所有意图和目的,对象是相同的.有什么我可以像在Java中那样做并覆盖equals()吗?

Pau*_*sik 5

尝试将对象的路径与以下内容进行比较:

Assert.AreEqual(expected.Path, actual.Path)
Run Code Online (Sandbox Code Playgroud)

这将比较底层路径(字符串类型)而不是对象引用.如果路径相同就足够了,你就不必重写任何东西.

编辑:

DirectoryEntry是一个从Object继承Equals的引用类型,因此:

来自Object.Equals方法:

Equals的默认实现支持引用类型的引用相等,以及值类型的按位相等.引用相等意味着被比较的对象引用引用相同的对象.按位相等意味着被比较的对象具有相同的二进制表示.