繁体   English   中英

比较两个IList时单元测试失败

[英]Unit Test failing when comparing two ILists

我正在运行一些TestMethods来测试JSON序列化程序的实现,以及在序列化\\反序列化之前和之后比较两个IList对象时,但是比较失败。

模型

public class BusinessModel
{
    public int ID { get; set; }
    public string Name { get; set; }
}

测试

IList<BusinessModel> model = new List<BusinessModel>
{
    new BusinessModel { ID = 1, Name = "Test1" },
    new BusinessModel { ID = 2, Name = "Test2" },
    new BusinessModel { ID = 3, Name = "Test3" },
    new BusinessModel { ID = 4, Name = "Test4" }
};

[TestMethod]
public async Task TestSerialiseDeserialiseIsEqual()
{
    ISerialiser serialiser = new Serialiser();

    IList<BusinessModel> deserialisedModel;
    string serialised = string.Empty;

    serialised = await serialiser.SerialiseAsync<IList<BusinessModel>>(model);
    deserialisedModel = await serialiser.DeserialiseAsync<IList<BusinessModel>>(serialised);

    Assert.IsTrue(model.SequenceEqual(deserialisedModel));
}

结果

我已经在这篇文章中尝试了许多测试方法的细节,但是都失败了。

Assert.AreEqual(t1.Count(), t2.Count());

IEnumerator<Token> e1 = t1.GetEnumerator();
IEnumerator<Token> e2 = t2.GetEnumerator();

while (e1.MoveNext() && e2.MoveNext())
{
    Assert.AreEqual(e1.Current, e2.Current);
}

通过集合计数项,但在第一个对象比较时失败。

Assert.IsTrue(model.SequenceEqual(deserialisedModel));

Assert.IsTrue failed

CollectionAssert.AreEqual(model.ToArray(),deserialisedModel.ToArray())

失败,并发生Collection.AreEqual failed (Element at index 0 do not match)

CollectionAssert.AreEquivalent(model.ToArray(),deserialisedModel.ToArray())

失败,发生{"CollectionAssert.AreEquivalent failed. The expected collection contains 1 occurrence(s) of <Helper.Tests.Serialisation.BusinessModel>. The actual collection contains 0 occurrence(s). "}

通过检查对象,它们看起来相同

原版的

在此处输入图片说明

反序列化对象

在此处输入图片说明

比较IList对象以进行单元测试的最佳方法是什么? 为什么我的测试失败?

您需要为BusinessModel类定义EqualsGetHashCode 默认的Equals实现是引用相等,并且两个列表中的对象的对象引用将不同。

或者,您可以创建一个IEqualityComparer<BusinessModel> ,它定义等式/哈希码并将其传递给SequenceEquals

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM