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