我工作的一个PHP项目与固体单元测试的复盖范围。

我注意到,这最后的时间,我非常棘手的操作单元测试命令行测试跑' --过滤器 命令。

这里是这样的命令的解释,从正式文件:

--过滤器

只有运行测试,其名称匹配给定的模式。该模式可以是姓名的一个测试或一个定期表达相匹配的多个测试的名字。

我常使用它,因为有时候它就变得非常有用的运行只是一个单一的测试或试验的情况下从整个试验基地。

我想知道如果这是良好做法或不?

我已经听说有时候,较好的做法是运行的整个试验套在你连续一体化的机器,如果 你肯定知道 那你有修改的一个组成部分和 100%的信心, ,它不会失败的其他构成部分的单元的测试。你怎么想?

前一段时间我认为,我们不应该这么关心时需要运行的整套所有单元的测试,但是当你有非常复杂的业务逻辑和单元的测试,这可能需要很长时间。

我的理解,认为"真正的"单元的测试,不应该与数据库,使用模拟/桩目的,我同意这一点。但有时候,这是很容易(便宜)使用DB固定装置试验。

请给我一些建议,如何这种问题可以解决?

有帮助吗?

解决方案

好的单元测试应当:

  • 有清晰的方法名称和变量名作为文件
  • 运行速度快。这也将是可能的 对于测试的复杂业务 逻辑。试验应在一个普通 时间的东西周围0.1秒。
  • 测试完全一件事情在一个试验方法
  • 不是整合与外部资源,如文件系统、电子邮件 数据库,web服务, 其他一切。你可以创建 单独数据库的集成试验 来测试你的数据库ineraction.这些测试将慢然后你单元 测试的大部分时间。我把我的 一体化测试,在一个单独的 项目和我跑他们只当我是 工作上的集成的代码。我 也运行它们在所有的基础上CI 服务器。
  • 是完全相互隔离。当你已经根据试验 彼此,你无法看到什么 你的问题是,从阅读它 测试都是失败。你可能要 调试,以找到该问题。孤立 试验将节省很多时间。

就个人而言,我没有使用类别的名字在我的测试。我使用2个试验项目每应用程序。一个对该单元的测试和集成测试和较慢的测试。

反应:

"但是有时候,这是很多 更容易(便宜)使用DB装置 测试。"

当你的代码写得好,它会更容易,以模拟。我不知道关于模拟框架在Php,但我用它们在其他语言节省我大量的时间。写作考试第一和代码后面可能会帮助你来设计你的代码进行测试更加容易。

我个人学习,以测试通过更好的

  • 阅读博客有关它
  • 阅读书籍有关它
  • 阅读测试的其他人写的代码
  • 写了很多测试的课程。我花了几个each的测试以成为良好的。

其他提示

我常使用它,因为有时候它就变得非常有用的运行只是一个单一的测试或试验的情况下从整个试验基地。

我想知道如果这是良好做法或不?

当然,只要运行完整的单元测试偶尔(通过CI服务器的声音)

运行"有趣"的测试,经常是更好的比运行的所有测试很少..

我会解决这一问题通过具有的一个子集试验("烟雾测试"),需要1分钟或更少的, 必须 可以运行之前提交,然后运行完整的测试你的CI的服务器。

如果你的全套测试需要>15分钟然后我会找到将它们分并运行它们在平行的。

然后你可以使用--过滤器的运行测试你最有兴趣在第一次,然后烟雾测试之前提交,并有其他运行,从CI服务器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top