gpt4 book ai didi

c# - 如何在单元测试中测试两个对象是否相等?

转载 作者:太空狗 更新时间:2023-10-30 00:49:24 25 4
gpt4 key购买 nike

<分区>

我有一个项目,在该项目中我接收作为 DTO 的对象,并将它们转换为 View 模型。为了进行这种转换,我决定制作自定义转换器,它会进行一些计算,以便将 DTO 属性转换为 View 模型。在所有这些准备就绪并且转换工作正常之后,我想为转换添加一些单元测试以使其更稳定(我知道这不符合 TDD,但这是我设法做到的)。

当我想要测试来验证两个 View 模型是否相等时,问题就来了

Assert.AreEqual(expected, actual);

因为没有一个 View 模型定义Equals方法,作为引用,它们永远不会相等。我考虑并发现了一些比较这些对象的方法:

  1. 定义Equals方法。但我不知道定义它是否是一个好习惯,仅用于测试目的。如果我定义它,建议定义GetHashCode方法太多,所以我不觉得这个方案是最好的。

  2. 我想到的另一种可能性是实现 IEqualityComparer<T>在测试项目中,将比较逻辑与主转换项目隔离开来,甚至将其提取到第三个项目中,以便转换模块在将来需要时可以使用它。这个实现看起来不错,但我不知道是否值得再添加一个包含很多类的项目,也应该测试一下。

  3. 我在 Stack Overflow question 上找到的第三种方法,这看起来很有趣,是将两个对象序列化并比较字符串。问题是我不知道这是否是一种好的编程习惯。

以下哪一个是比较对象的最佳方式?我是否遗漏了一些可能更有效的方法?

注意:View-Models是复杂的对象,我不能改变转换为其他技术的方式。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com