[英]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.