【发布时间】:2018-01-04 20:47:59
【问题描述】:
我在视觉工作室上使用 nunit testing v2.6.4 并且遇到了一个奇怪的错误。当在两个单独的对象(但类型相同)ObjOne 和 ObjTwo 上调用“Assert.AreEqual”时,该错误会发生。
这两个对象是如何创建的:
*ObjOne 是使用有效字段创建的 (firstName = "Foo", lastName = "Bar")
*ObjOne 的属性被序列化和存储。
*ObjOne 的属性被反序列化后放入 ObjTwo。
*ObjOne 和 ObjTwo 的字段具有相同的值。
但是,当对这两个对象调用“Assert.AreEqual”时,它会返回以下错误
"
An exception of type 'NUnit.Framework.AssertionException' occurred in nunit.framework.dll but was not handled in user code
Additional information: Expected: <NameSpace.TypeOfObjOneAndTwo>
But was: <NameSpace.TypeOfObjOneAndTwo>
"
我有三个问题。
是否 Assert.AreEqual 检查引用是否相同?还是价值观相同? (3.0 文档 here 说它检查的是值而不是参考,但我不确定这个版本的 nunit。我找不到文档)。由于其他因素,我无法升级nunit的版本。
Assert.AreEqual 是否检查两个对象的公共字段以外的其他值?
我是否可以获取有关此错误的更多信息?
【问题讨论】:
-
它只是在对象上调用
Equals。如果您没有在类中覆盖它,它将执行引用相等。 -
这里的另一个选项是断言类的所有属性都是相等的。
标签: c# visual-studio unit-testing nunit