- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为开源 Python ORM 开发后端。该库为每个后端包含一组 450 个测试用例,所有这些都集中在一个巨大的测试类中。
对我来说,对于一个类(class)来说这听起来很多,但我从来没有参与过有 450 个测试用例的项目(我相信这个库有大约 2000 个测试用例,不包括测试每个后端的案例)。我觉得这有点偏高(假设实际上没有任何神奇的数字,你应该分解一些东西)是正确的,还是对一个测试类来说有这么多测试没什么大不了的?
即使没有太多的测试用例,如何重构一个过大的测试类?我关于重构的大部分知识都是关于确保对正在重构的代码进行适当的测试。我从来没有遇到过需要重构测试本身的情况。
编辑:之前,我曾说过这些是单元测试,这并不完全正确。这些更恰本地称为集成测试。
最佳答案
一个类(class)进行 450 次测试听起来很多,但到底有多糟糕取决于它们的组织方式。如果它们都真正独立于彼此和测试类的成员,那可能没什么大不了的 - 除了一定很难找到特定的测试。
另一方面,如果测试类的成员仅被一些测试使用而被其他测试忽略,则它是一个名为 Obscure Test 的 Test Smell,包含诸如 之类的 Root Causes一般夹具 和不相关信息(请注意行话 - 我会回到这里)。
有多种方法可以将测试组织到类中。最常见的模式是每个类的测试用例类、每个功能的测试用例类和每个夹具的测试用例类。
如何构建测试不仅在编写测试时很重要,而且出于可维护性的原因也很重要。仅出于这个原因,我倾向于说重构测试是值得的。在 TDD 中,测试代码库(几乎)与实际代码库一样重要,应该受到同样的尊重。
关于这个主题有一整本书,叫做 xUnit Test Patterns: Refactoring Test Code我怎么推荐都不为过。它包含处理单元测试和 TDD 的完整模式语言,我在这里使用的所有模式名称都源自它。
关于language-agnostic - 测试类可以变成 "God object"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024074/
我正在努力使用 Sidekiq在God Gem旁边.我希望能够使用 $god start sidekiq 手动启动 sidekiq 进程,但这无法启动该进程。如果我设置 w.keepalive(在下面
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我有一个 init.d 脚本,用于在重新启动后在我的服务器上启动 god。 我已经运行了 sudo chmod +x/etc/init.d/god 和 sudo update-rc.d -f god
我使用 pm2 来处理节点项目。即使所有项目都通过 pm2 停止,我看到 pm2 God Daemon 始终在运行并消耗约 27M 内存。这是它在 ps aux 上的样子:nodeuser 2577
阅读the wikipedia entry about God Objects ,当一个类知道的太多或做的太多时,它说它是一个神对象。 我明白这背后的逻辑,但如果这是真的,那么你如何将每个不同的类结合
有没有可能让上帝依次启动两个过程? 我正在使用依赖于 Redis 的 Sidekiq。我想启动 Redis,然后启动 Sidekiq,我设置了两个独立的 watch ,它们可以独立工作,但是当我运行时
我正在设计一个允许我在图形上绘制一些函数的应用程序。每个函数都将从我将传递给这个图形类的一组点中绘制出来。 有不同种类的点,它们都继承自 MyPoint 类。对于某些类型的点,它只会按原样将它们打印在
我目前正在尝试使用 god 监控总共三个 Rails/Rack 应用程序的各种进程/守护进程。监控效果很好,问题是我无法将 god 配置为在重启后自动启动所有进程。 我的设置:我正在运行带有 Cent
我有一个名为“Parameters”的对象,它在调用树中跨包边界从一个方法到另一个方法。它有大约五十个状态变量。每种方法可能使用一个或两个变量来控制其输出。 我认为这是一个坏主意,因为我无法轻易看出方
我正在为开源 Python ORM 开发后端。该库为每个后端包含一组 450 个测试用例,所有这些都集中在一个巨大的测试类中。 对我来说,对于一个类(class)来说这听起来很多,但我从来没有参与过有
是这样的: 我最近加入了一个 webapp 项目,作为标准,它维护一个全局可用的(即它本身是 window 的属性)对象,它包含作为属性或递归子 -属性、运行应用程序所需的所有函数和变量——包括所有小
我有一个包含大量现有代码的 Servlet。我正在尝试将依赖注入(inject)添加到其中的一部分。目前我正在手动进行: public class AdjustBookPriceHandler ext
我正处于一个大型项目的完成阶段,该项目包含多个大型组件:图像采集、图像处理、数据存储、工厂 I/O(自动化项目)和其他几个组件。 这些组件中的每一个都相当独立,但为了让项目作为一个整体运行,我至少需要
我在启动和运行 god gem 时遇到了一些问题。我基本上从 Github 复制了配置文件,但它似乎没有正确启动 resque worker。我的配置文件如下所示: rails_env = "pr
我使用 God gem 来监控我的 delayed_job 进程,到目前为止 gem 正在按其应有的方式工作,但由于某种原因我无法让他发送电子邮件通知(我使用谷歌应用程序)。这是我的神文件配置: Go
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
情况是这样的:我有一个类做得太多了。它主要用于访问配置信息,但它也有数据库连接。它是作为单例实现的,因此这也使单元测试变得困难,因为大多数代码都与它紧密耦合。这更成问题,因为它创建了一个导入时依赖项(
我有一个使用 Redis、Resque worker 和调度程序的 rails 应用程序。我正在使用上帝来监控 worker 和调度程序。那部分正在工作。 我需要知道的是是否有办法将 Resque 工
在我当前正在开发的系统中,我有许多被定义为接口(interface)和基类的组件。系统的每个部分都有一些与系统其他部分交互的特定点。 例如,数据准备组件准备了一些数据,最终需要进入数据处理部分,通信组
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
我是一名优秀的程序员,十分优秀!