用 MSTest 编写 UnitTests 我想断言返回值与我期望的值相等。
预期类型是不实现IComparable
接口或IEquatable
接口的自定义类型,这就是为什么我想提供Assert.AreEqual
比较两个对象的可能性。
我知道这种可能性存在于CollectionAssert.AreEqual
. 但是,此方法需要两个继承ICollection
我的对象没有的对象。
为什么Assert.AreEqual
不允许我指定自定义比较器?我错过了什么吗?
用 MSTest 编写 UnitTests 我想断言返回值与我期望的值相等。
预期类型是不实现IComparable
接口或IEquatable
接口的自定义类型,这就是为什么我想提供Assert.AreEqual
比较两个对象的可能性。
我知道这种可能性存在于CollectionAssert.AreEqual
. 但是,此方法需要两个继承ICollection
我的对象没有的对象。
为什么Assert.AreEqual
不允许我指定自定义比较器?我错过了什么吗?
不确定这是否是真正的原因,但是如果您的自定义IComparer
有错误怎么办 - 您的单元测试将毫无意义(请记住,测试框架无法判断您是否为它编写了单元测试,更不用说它们是否“正确”了")
你能在你的测试中创建一个比较器吗?
var com = new MyComparer<Foo>();
int expected=0;
int actual = com.Compare(a,b);
if (actual!=0)
{
Assert.Fail("oops");
}
也许不理想,但应该可以......我几年前在msdn上也发现了这个问题,没有答案 - 但问题海报的解决方法很有趣。