- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力更好地理解这三个原则。
我的问题是... 如何在不违反 SRP、OCP 和 DRY 的情况下编写测试?
由于测试文件中的代码相似,我当前的设计违反了 DRY。
我不能将测试文件合并在一起,因为那样会违反开放/封闭原则。 (后面大概率会加入更多模块)
我在这里缺少什么吗?如果有帮助,我将为此使用 Ruby 和 Minitest。
模块文件
a.rb:
module A
# does an algorithm
end
b.rb:
module B
#does another algorithm
end
测试文件
a_test.rb:
class ModuleATest
# tests the algorithm
end
b_test.rb:
class ModuleBTest
# tests the algorithm
end
最佳答案
测试代码与常规代码有很大不同,因此尽管所有这些设计原则在测试代码中通常都是有效的,但它们的重要性在那里是不同的。
关于 DRY,测试代码的可读性高于一切,因此测试代码中的重复比常规代码多一点是正常的。听起来好像测试您的两种算法中的每一种都需要您没有显示的重复;通过将重复提取到测试辅助方法中来解决这个问题。但只有在保持测试清晰度的情况下才这样做。
关于 OCP,测试需要做任何它需要做的事情来测试它正在测试的模块。如果一开始你的模块设计有误,不得不将一个模块分成两部分或类似的东西,你也必须对测试做同样的事情。所以不要担心你的测试是否遵循 OCP,担心你的常规代码和测试将遵循。
关于 SRP,再次强调,测试需要做任何它需要做的事情来测试它正在测试的模块。如果一个模块的职责太多,那么它的测试也将如此。这表明模块需要重构以解决模块和测试的问题。
此外,还有不同种类的测试。集成测试本质上比单元测试承担更多责任。
关于testing - 在不违反 SRP、OCP、DRY 的情况下编写测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33371795/
我知道您可以在 Api 管理中更改 Ocp-Apim-Subscription-Key header 的名称,但是“Ocp”实际上代表什么? 最佳答案 我相信 OCP 代表 Open Compute
我理解当请求包含 Ocp-Apim-Trace: true 时,如下所示: GET /api/v1/BotConfig HTTP/1.1 Host: xyz.azure-api.net Cache-C
我理解当请求包含 Ocp-Apim-Trace: true 时,如下所示: GET /api/v1/BotConfig HTTP/1.1 Host: xyz.azure-api.net Cache-C
我有ConfigMap,ImageStream,BuildConfig和DeploymentConfig API,它们可以成功部署我的应用程序并根据要求启动Pod的数量。但是我现在想使用CronJob
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
最近,我们的一个容器中出现以下异常,该容器在 Openshift 4.2 中运行 Java 应用程序。这个容器曾经在 Openshift 3.11 上完美运行。 Exception in thread
本文实例讲述了PHP面向对象五大原则之开放-封闭原则(OCP)。分享给大家供大家参考,具体如下: 1. 什么是“开放-封闭” 随着软件系统规模的不断增大,软件系统的维护和修改的复杂性不断提高,这
A.每次 COMMIT 发生时,LGWR 总是写入重做日志。 B.每次发生 ROLLBACK 时,LGWR 总是写入重做日志。 C. LGWR 从不向重做日志写入单个 COMMIT。 D.当 DBWR
我一直在尝试将 SRP 和 OCP 应用于此代码。该代码应允许银行员工预订或不预订硬编码预约。我不知道要创建哪些类来将这两个原则应用到代码中。我想知道我需要哪些类以及我应该应用的继承。
这个问题在这里已经有了答案: Regular expression - Greedy quantifier [duplicate] (1 个回答) 关闭 8 年前。 import java.util
我想配置我的 OCaml OPAM 构建以并行运行多个工作进程。实际上在 OPAM github 上有一张票 https://github.com/OCamlPro/opam/issues/310 这
来自 Agile Principles, Patterns, and Practices in C#通过罗伯特·马丁, Listing 10-1. A violation of LSP causing
我正在努力更好地理解这三个原则。 我的问题是... 如何在不违反 SRP、OCP 和 DRY 的情况下编写测试? 由于测试文件中的代码相似,我当前的设计违反了 DRY。 我不能将测试文件合并在一起,因
我正在研究一种从数据库中检索记录集合的方法。这些记录根据它们包含的数据的一个方面存储在单独的表中。假设它看起来像这样。 public class EnglishPhrase : IPhrase {
我有一个接口(interface)可以说 ISendOut 我从它继承了两个不同的类例如 TransferViaSerialPort 和 TransferViaWirelessModule(我的意思是
是否可以在 Azure API 管理服务中禁用 Ocp-Apim-Trace? 最佳答案 无法禁用跟踪功能,不发送此 header 将仅禁用一个请求的跟踪收集。但请注意,只有管理员用户才能收集跟踪,如
“OCP Java SE 6 程序员实践考试(考试 310-065)”评估测试 2 中的一道题。 给定: public class WeatherTest { static Weather w; pu
我想使用 API,但在以下页面找不到 Ocp-Apim-Subscription-Key: 最佳答案 您可以通过依次转到“API 管理服务”和“API”来找到它。选择您的 API、端点,然后选择右侧的
我有一些通过 Azure API 管理代理的 REST API。出于某种原因,我想让它对所有请求公开。从开发人员的角度来看,我想摆脱 header (或请求)中的设置键: Ocp-Apim-Subsc
我正在考虑使用 Azure API 管理为许多后端 API 提供一致的前端。 大多数 API 使用 OAuth 2.0 应用程序流程(ClientID + 客户端 key ,后端 API 检查声明/范
我是一名优秀的程序员,十分优秀!