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()吗?
尝试将对象的路径与以下内容进行比较:
Assert.AreEqual(expected.Path, actual.Path)
Run Code Online (Sandbox Code Playgroud)
这将比较底层路径(字符串类型)而不是对象引用.如果路径相同就足够了,你就不必重写任何东西.
编辑:
DirectoryEntry是一个从Object继承Equals的引用类型,因此:
Equals的默认实现支持引用类型的引用相等,以及值类型的按位相等.引用相等意味着被比较的对象引用引用相同的对象.按位相等意味着被比较的对象具有相同的二进制表示.
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |