C# NUnit或Fluent断言测试引用相等性?
我使用的是NUnit2.6.2+2.0.1 我想断言,两个引用并不指向同一个对象实例。我找不到一个干净的方式来表达这一点 NUnit有C# NUnit或Fluent断言测试引用相等性?,c#,unit-testing,reference,nunit,fluent-assertions,C#,Unit Testing,Reference,Nunit,Fluent Assertions,我使用的是NUnit2.6.2+2.0.1 我想断言,两个引用并不指向同一个对象实例。我找不到一个干净的方式来表达这一点 NUnit有Assert.ReferenceEquals(ref1,ref2)-但是我找不到否定的断言 在流畅的断言中,我找不到任何直接支持此场景的内容 我唯一能做的就是这样: NUnit:Assert.False(object.ReferenceEquals(ref1,ref2)) Fluent:object.ReferenceEquals(ref1,ref2).Shoul
Assert.ReferenceEquals(ref1,ref2)
-但是我找不到否定的断言
在流畅的断言中,我找不到任何直接支持此场景的内容
我唯一能做的就是这样:
NUnit:Assert.False(object.ReferenceEquals(ref1,ref2))代码>
Fluent:object.ReferenceEquals(ref1,ref2).Should().BeFalse()代码>
就最小噪音而言,这两种方法似乎都不太理想。有更好的方法吗?您可以使用NotBeSameAs()方法:
它的文件说:
断言对象引用引用的对象与
另一个对象引用引用
可以将Is.Not.SameAs()与Nunit 3.x一起使用
这正是我要找的!直觉上我不清楚BeSameAs()做了什么,我也没能读到描述。谢谢这就是(非)BeSameAs()和(非)Be之间的最大区别。前者使用引用相等,后者使用object.Equals()。
ref1.Should().NotBeSameAs(ref2);
var x = new object();
Assert.That(x, Is.SameAs(x)); // success
Assert.That(x, Is.Not.SameAs(x)); // fail
var y = new object();
Assert.That(x, Is.SameAs(y)); // fail
Assert.That(x, Is.Not.SameAs(y)); // success