单元测试 Assert.AreEqual 失败

2023-11-25

我对从集合中获取对象的方法进行了单元测试。这一直失败,我不明白为什么,所以我在下面创建了一个非常简单的测试来创建 2 个供应商对象并测试它们是否相等,看看我是否可以在代码测试中发现问题。但这次测试再次失败。谁能看到或解释为什么?

    [TestMethod()]
    public void GetSupplierTest2()
    {
        Supplier expected = new Supplier();
        expected.SupplierID = 32532;
        expected.SupplierName = "Test 1"

        Supplier actual = new Supplier();
        actual.SupplierID = 32532;
        actual.SupplierName = "Test 1"

        Assert.AreEqual(expected, actual);
    }

但是如果我测试对象的各个属性,测试就会通过......

    [TestMethod()]
    public void GetSupplierTest2()
    {
        Supplier expected = new Supplier();
        expected.SupplierID = 32532;
        expected.SupplierName = "Test 1"

    Supplier actual = new Supplier();
        actual.SupplierID = 32532;
        actual.SupplierName = "Test 1"

        Assert.AreEqual(expected.SupplierID , actual.SupplierID );
        Assert.AreEqual(expected.SupplierName , actual.SupplierName );
    }

正如其他所有答案所说,问题是您正在尝试比较以下实例Supplier[可能]没有覆盖Equals方法。但我认为你不应该覆盖Equals用于测试目的因为它可能会影响生产代码或者您可能需要另一个Equals生产代码中的逻辑。

相反,您应该像在第一个示例中那样逐一断言每个成员(如果您没有很多地方想要比较整个对象),或者将此比较逻辑封装在某个类中并使用此类:

static class SupplierAllFieldsComparer
{
    public static void AssertAreEqual(Supplier expected, Supplier actual)
    {
        Assert.AreEqual(expected.SupplierID , actual.SupplierID );
        Assert.AreEqual(expected.SupplierName , actual.SupplierName );            
    }
}

// 测试代码:

SupplierAllFieldsComparer.AssertAreEqual(expected, actual);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单元测试 Assert.AreEqual 失败 的相关文章

随机推荐

  • C# 的远程 SQL 服务器的正确连接字符串

    我只想知道远程 sql server Express 版本的正确 sql 连接字符串 这就是我得到的 但我遇到了一些问题 SqlConnection cs new SqlConnection Data Source IP Address P
  • 承诺和摩卡:是否在之前完成()?

    我在读关于摩卡承诺测试的一些教程 有一段代码 before function done return Promise resolve save article then function done Why done 调用在then in t
  • 翻译源代码中的注释和区域名称

    有谁知道批处理程序或 VS 2010 插件 脚本可以让我将注释和区域名称从中文翻译成英文 我发现的唯一一个要么处理所有字符串 要么一次只处理一个字符串 我有两个大型 C 项目正在尝试通读 Thanks 使用 PrepTags 准备要翻译的文
  • C# Socket.Receive 消息长度

    我目前正在开发一个 C Socket 服务器 它可以接受来自多个客户端计算机的多个连接 服务器的目标是允许客户端 订阅 和 取消订阅 服务器事件 到目前为止 我已经很好地观察了这里 http msdn microsoft com en us
  • Excel循环遍历行并将单元格值复制到另一个工作表

    我在实现我的预期结果方面面临一些困难macro 意图 我有一个数据列表sheets input column A 具有值的行数会有所不同 因此我创建了一个循环来运行宏 直到活动单元格为空 我的宏从Range A2 并一直向下延伸到 A 列
  • 为什么我们在nodejs中使用导出?

    我是 Nodejs 的新手 就我而言module exports and exports两者都是空对象 module exports可以暴露函数 whileexports可不至于此 一切都可以通过 module exports 来实现 那么
  • 为什么布尔数据类型没有在 C 中实现

    有朋友问了一个问题 为什么没有BooleanC 编程语言中的数据类型 我做了一些搜索和阅读 我在堆栈溢出中得到了一些问题和答案 所有数据类型都应该是可寻址的 但位不能寻址 主流CPU硬件层面的基本数据结构是字节 对这些 CPU 中的位进行操
  • 在 HTML 中对齐小数点

    我有一个表格 其中一列包含十进制数字 我希望以类似于文字处理程序的 小数制表符 功能的方式对齐它们 以便所有点都位于垂直线上 我目前有两种可能的解决方案 但我希望有更好的解决方案 解决方案 1 拆分 HTML 中的数字 例如 td div
  • Javascript 中的预增量

    我刚刚遇到了 Javascript 中关于预增量的 功能 在我使用过的所有其他语言中 它都像我想象的那样 例如 在 C 中 include
  • 向图像添加水印图像

    我想在我的所有图像中添加一个小的淡出水印图像 有没有办法在 c 中做到这一点 您可以使用System Drawing 1 create a bitmap create a empty one or from file Bitmap bmpP
  • 使用 Imagick php 扩展将多页 PDF 转换为 JPG 时出现黑色背景

    使用 Imagick php 扩展将多页 PDF 转换为 JPG 时纠正黑色背景的最佳方法是什么 以下是我的应用程序中使用的代码 imagick new Imagick file imagick gt setResolution 150 1
  • 创建 ImagePart 并不将关系保存在 OpenXML 中

    更新以提供完整的工人阶级示例 以及 2 个示例文档 www sklinar co uk wp content uploads mydoc docx 原始文档包含 INCLUDETEXT 指令以合并到 Footer Docx 中 www sk
  • 使用 Service Worker 缓存文件时显示进度

    我对 JavaScript 不太熟悉 很难接触到 Service Worker 我想使用服务工作人员在页面加载时缓存必要的文件 使整个网络应用程序离线可用 虽然这有效 但需要相当长的时间才能将所有文件下载到磁盘 这使得浏览器无响应并且用户不
  • 客户端和服务器无法通信,因为它们不具备通用算法 - ASP.NET C# VB Visual Basic IIS TLS 1.0 / 1.1 / 1.2

    我对 C PayTrace 网关有疑问 下面的代码一直工作正常 直到昨天我相信他们由于 Poodle 漏洞而关闭了 SSL3 运行下面的代码时 我们收到以下消息 远程服务器已强制关闭连接 在对该问题进行一些研究后 我们确定由于我们的 IIS
  • 如何在 MySQL 数据库中存储 60 个布尔值?

    我正在构建一个移动应用程序 我使用 PHP 和 MySQL 编写后端 REST API 如果我必须在我的移动应用程序中名为 报告 的表 用户必须检查表单中的内容 中存储大约 50 60 个布尔值 我会将值 0 1 存储在一个简单的数组中 在
  • 如何声明 2D 字符串数组列表?

    我想做这样的事情ArrayList
  • 使用带有空基类的聚合初始化时如何避免 {}

    C 17 的基类聚合初始化很棒 但当基类仅提供一些函数 因此没有数据成员 时 它就很冗长 这是最小的例子 include
  • 将 Tomcat 配置为使用 cacerts 以外的信任存储

    我在 Windows 上运行 Tomcat 6 并且希望 Tomcat 对 Java 客户端 Web 请求使用除 cacerts 之外的不同信任存储 我尝试添加此设置 Djavax net ssl trustStore C ca keyst
  • Android Studio gradle 构建非常慢

    我是 Android Studio 的新手 每当我运行我的项目时 gradle 构建大约需要 14 分钟 我已经检查了提高构建速度的解决方案 如中所述here 我的 gradle properties 文件 Project wide Gra
  • 单元测试 Assert.AreEqual 失败

    我对从集合中获取对象的方法进行了单元测试 这一直失败 我不明白为什么 所以我在下面创建了一个非常简单的测试来创建 2 个供应商对象并测试它们是否相等 看看我是否可以在代码测试中发现问题 但这次测试再次失败 谁能看到或解释为什么 TestMe