在代码中与在脚本中生成集成测试数据[关闭]

2024-03-16

这个问题很可能是基于意见的。但我确信,有确凿论据支持的观点将为明智的决策铺平道路。

我确实喜欢使用 Autofixture 生成数据库状态。

我真诚地讨厌编写 SQL 脚本,然后编写与该脚本的假设“神奇”相关的期望,因为我不喜欢知识/逻辑跨层/技术传播。

我讨厌当某些没有默认值的列添加到表中时测试会失败,并且我们必须手动编辑所有失败的脚本,即使对于根本不使用该列的测试也是如此。

我喜欢可以轻松地从数据库状态中得出期望,或者了解当数据库模式和类发生变化时编译如何失败。并且仅在接触更改列的测试中才会出现问题。

我的同事半信半疑地接受了最后的论点,但仍然坚持认为调试的简便性比测试的脆弱性更重要。他们认为随机生成的数据很难调试和读取,他们坚持认为理解 4 个静态/稳定 sql 屏幕比查看生成某些对象集合的代码然后设置“影响测试的逻辑”属性值要容易得多。

他们的观点是:

当我明确指出实体 A 必须与实体 B 相关并且 后来我看到 A 与 C 相关,我明白导致错误的原因。 但很难将无意义的对象互连起来:B 和 C 变成 人类无法区分。并将身份赋予 实体我们必须设置其他不影响逻辑的属性 正在接受测试。

我提出了一些妥协。
通常有某种“名称”属性,我们可以手动设置对象的“标签”。

他们不愿意接受这个建议,我就想问:

好吧,伙计们,让我们暂时忘记 Autofixture 的随机性,假装 我们只是将数据库状态表示为 POCO 对象并在之前将它们持久化 调用被测试的方法。我们失去了构造逻辑的独立性,但我们仍然可以明确地设定来自国家的期望。



事实上,我对大家的反应感到惊讶:

要调试这些,我需要打开 Visual Studio 并执行 数据持久化后暂停。但是,我们不承诺交易 - 测试后所有更改都会回滚。因此,我需要从 SQL Management Studio 中读取未提交的数据。有这么多 仅用于调试存储过程的动作。我更愿意写 sql 脚本而不是 POCOS。

所以现在它变成了关于个人喜好和品味的讨论。另一方面,很容易成为一个有偏见的热情采摘者和松散的客观性。

这就是为什么我想听听社区的一些想法和论点。


None

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

在代码中与在脚本中生成集成测试数据[关闭] 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 您将如何做到这一点:表格还是 CSS? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 Jersey(测试框架)将数据源依赖项注入到 RESTful Web 服务中?

    我正在使用 Jersey 构建一个 RESTful Web 服务 该服务依赖 MongoDB 来实现持久性 Web 服务本身连接到默认数据库 但对于单元测试 我想使用单独的测试数据库 我将在 setUp 中填充此测试数据库 运行测试 然后在
  • 每张信用卡的 paypal payer_id 是唯一的吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道使用同一张信用卡的两次单独付款的 paypal payer id 是否相同 这显然对于检测可能的欺诈交易很有用 请注意 对于 paypal 帐
  • Vim 脚本突出显示大括号等标签的末尾

    我需要一个 Vim 脚本来在光标位于标签开头时突出显示标签的结尾 例如 在 html 标签中 当光标位于标签开头时 它应该突出显示标签结尾 接口应该是通用的 以便可以添加更多标签 如果您将 html vim 文件替换为this http w
  • 空值可以传递给包裹吗?

    是否可以写null to Parcel当分割一个对象时 得到null再次解压时又回来了 假设我们有以下代码 public class Test implements Parcelable private String string null
  • 在调用 Main() 之前 Windows 会做什么?

    Windows 必须做一些事情来解析 PE 标头 将可执行文件加载到内存中 并将命令行参数传递给main Using OllyDbg I have set the debugger to break on main so I could v
  • Twitter API请求限制问题

    我编写了一个小型 java 程序来从 Twitter 下载所有朋友和关注者的个人资料图片 但我收到错误 因为每个 IP 地址每小时只允许 150 个请求 确切的错误是 twitter4j TwitterException 400 The r
  • SELECT 语句中的子查询 (MySQL)

    我正在创建一个 SQL 语句 它将返回一个产品列表以及我在每个商店中可以找到的每种产品的数量 我的表的结构 带有一些示例数据 如下 productID size color stock storeID 1 S RED01 1 BCN 1 S
  • 如何根据单元格值有条件地设置 ReactJs 材料表单元格的样式?

    我在材料表中有一个列 其中包含成功 失败等值 根据这些值 我需要在单元格上应用颜色 如何使用材质表来实现 这个答案是专门针对反应材料表 https material table com 在列部分中 我们需要具有如下所述的内容 因此当在表中呈
  • 调用中参数“coder”缺少参数

    我将自定义 UIButton 编码为 class AccountOpeningButton UIButton required init coder aDecoder NSCoder super init coder aDecoder 我能
  • 无法在当前范围或上下文中解决。确保所有引用的变量都在范围内

    我收到此错误 无法在当前范围或上下文中解析 TblProduct 请确保所有引用的变量都在范围内 加载所需的架构 并且正确引用命名空间 在下面的代码中 我不确定为什么它不能正常工作 我希望有人能够提供帮助 谢谢 private void A
  • 短数组的最佳排序函数

    我正在研究一种处理图片的算法 基本上我将实现一个扩散 每个像素将获得周围 8 个像素的中值 它自己的值 我要做的就是使用该值创建一个包含 9 个整数的数组 对数组进行排序并获取 array 4 处的中值 我仍然不知道该使用什么来解决这个问题
  • 根据需要验证正文中的不可空属性 - AspNetCore 3.1

    我正在尝试验证是否在请求中完全忽略了属性 字段 即 ModelState 无效并且 BadRequest 被发送回客户端 但是我正在努力处理请求主体中的不可空类型 适用于可空类型 Required public string Nullabl
  • 使用 SPARK 证明选择排序算法

    我试图证明我在 Ada 中的选择排序实现是正确的 我尝试了一些循环不变量 但使用 gnatprove 只能证明内部循环的不变量 package body Selection with SPARK Mode is procedure Sort
  • 在 Swift 中设置活动标签栏项目的背景颜色

    如果可能的话 我希望在不使用图像的情况下完成此任务 有没有一种方法可以以编程方式创建图像中显示的效果 而不必将每个选项卡渲染为图像 我在 SO 上审阅的每个问题都将选项卡保存为 JPG 这比我认为应该做的工作要多 Any ideas 我采用
  • 使用gdb将地址转换为行

    我有一个由剥离的应用程序生成的堆栈跟踪 如下所示 Check failure stack trace 0x7f0e442d392d unknown 0x7f0e442d7b1f unknown 0x7f0e442d7067 unknown
  • SwiftUI 中的事件触发的动画

    SwiftUI 动画通常由状态驱动 这很好 但有时您确实想触发临时 通常是可逆的 动画来响应某些事件 例如 我想在点击按钮时暂时增加按钮的大小 释放按钮时大小的增加和减小都应作为单个动画发生 但我无法弄清楚这一点 我认为它可以与转换结合在一
  • 将新文件添加到 subversion 而不更新整个文件夹

    我想要做的是能够将一个文件添加到本地计算机中 Subversion 源代码控制下的文件夹中 然后提交它 到这里没问题 在服务器上 我想使用 Subversion 获取新文件 但不必对整个文件夹进行 更新 这可能会更新一堆不相关的文件 你看
  • Java:如何从静态上下文中获取当前类的类对象?

    我有一个日志记录函数 它将调用对象作为参数 然后我对其调用 getClass getSimpleName 以便我可以轻松获取类名称以添加到我的日志条目中以方便参考 问题是 当我从静态方法调用日志函数时 我无法传入 this 我的日志函数看起
  • 在代码中与在脚本中生成集成测试数据[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这个问题很可能是基于意见的 但我确信 有确凿论据支持的观点将为明智的决策铺平道路 我确实喜欢使用 Autofixture 生成数据库状态 我真诚