繁体   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