NUnit或Fluent Assertions测试参考相等性?

时间:2013-07-19 08:47:31

标签: c# unit-testing reference nunit fluent-assertions

我正在使用NUnit 2.6.2 + Fluent Assertions 2.0.1。

我想声明两个引用不指向同一个对象实例。我找不到 clean 表达方式。

NUnit Assert.ReferenceEquals(ref1, ref2) - 但我找不到否定的断言。

流利断言中,我找不到任何可以直接支持此方案的内容。

我能做到的唯一方法就是这样:

NUnit:Assert.False(object.ReferenceEquals(ref1, ref2));

流利:object.ReferenceEquals(ref1, ref2).Should().BeFalse();

就最小噪音而言,这两者似乎都不太理想。还有更好的方法吗?

2 个答案:

答案 0 :(得分:13)

您可以使用NotBeSameAs()方法:

ref1.Should().NotBeSameAs(ref2);

其文件说:

  

断言对象引用引用的是不同的对象   另一个对象引用是指。

答案 1 :(得分:3)

您可以将Is.Not.SameAs()与Nunit 3.x here

一起使用
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