C# NUnit或Fluent断言测试引用相等性?

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

我使用的是NUnit2.6.2+2.0.1

我想断言,两个引用并不指向同一个对象实例。我找不到一个干净的方式来表达这一点

NUnit
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