【问题标题】:Proper Unit testing with large projects对大型项目进行适当的单元测试
【发布时间】:2016-10-21 18:15:55
【问题描述】:

我正在使用 Laravel 为大型 API 编写单元测试,我担心由于系统的复杂性,单个测试需要很多先前的条件,例如有用户、会话、活动区域等. 并且由于我正在使用事务(以避免将测试记录留在数据库中),我需要为每个测试函数创建这些先前的条件......并且代码增长得非常快并且测试不再是单一的(因为我必须检查在测试实际目标之前的每个先前条件,讽刺的是做其他单一测试)。

你如何处理这种情况?您是否按顺序执行测试并保持状态以进行进一步的测试?你如何处理嘲笑?

谢谢。

【问题讨论】:

  • 我不认为你描述的是单元测试。并且使用 phpunit 运行测试不会使它们成为单元测试。
  • 最近几天我看了很多测试,现在我可以看到有不同级别的测试,包括单一、接受和集成。

标签: php unit-testing laravel-5


【解决方案1】:

遵循您概述的方法将很快变得无法维护。创建大型可维护单元测试套件的一个重要部分是通过隔离测试来最大程度地减少级联故障。

如果每个测试都依赖于其他测试,那么当依赖的实现发生变化时,就会出现很多不相关的测试失败。孤立地测试事物可以帮助减少这种情况。创建隔离测试是干净架构和loosely coupled 组件的产物。 Dependency injection 通常在易于测试的设计中发挥重要作用。

做到这一点的一种方法是隔离依赖关系,并且只运行您的应用程序逻辑。

【讨论】:

  • 希望您不要介意我将maintainable 更改为unmaintainable。我有 95% 的把握这是一个错字。
  • 我们正在重建该系统(不是从头开始,感谢上帝),我正在将 TDD 引入工作流程,因此我会尽我所能保持隔离。
猜你喜欢
  • 2011-03-26
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
相关资源
最近更新 更多