【问题标题】:Symfony2 functional tests takes hours to finish using PHPUnitSymfony2 功能测试需要几个小时才能使用 PHPUnit 完成
【发布时间】:2015-04-06 20:15:17
【问题描述】:

我目前正在使用 symfony2 创建一个项目,我正在使用 PHPUnit 供应商对我的代码进行功能测试。 我面临一个问题,即随着项目变大,功能测试时间也会增加。 注意:我正在为每个功能测试功能加载 Fixtures。

我的问题在这里?实现在合理时间内运行的功能测试的最佳做法是什么。

另一方面,我可以使用任何捆绑包或工具来加速此过程吗?

【问题讨论】:

  • 单元测试应该是独立的,并且不涉及任何外部资源(这就是术语中“单元”分数的含义)。你所做的不是“单元测试”。
  • @zerkms 你会解释更多!外部资源是什么意思?
  • 所有需要任何类型的装置或清理或远程连接的东西:数据库、文件系统、http 等
  • @zerkms 所以你的意思是我在做功能测试而不是单元测试?
  • 将测试分为需要完整夹具负载的测试和不需要的测试。我没有发现固定装置实际上可以用于测试大型应用程序。确实,您所做的不是单元测试,但对于应用程序功能测试可以说更有用。旧的“单元测试需要隔离”的口号实际上并不能帮助解决问题。就个人而言,我倾向于针对真实世界的数据库快照进行测试,但尽量不要对其当前状态做出太多假设。

标签: php symfony phpunit fixtures


【解决方案1】:

您的问题很复杂,很难准确地说出延迟问题。

首先,您可以划分可以在测试套件之前加载的固定装置和可以通过 setUp 方法加载的其他部分。

第二个可以真正加快测试过程的建议是多线程运行。我使用“最快”的库,与一个线程运行相比,它可以让我将测试速度提高大约 3-4 倍(在 i7 上)。

https://github.com/liuggio/fastest

find tests/ -name "*Test.php" | ./bin/fastest "bin/phpunit -c app {};" 

【讨论】:

    【解决方案2】:

    只是一些关于单元/功能测试参数的补充。正如我所看到的主题是关于“功能”测试,如果工具是 PhpUnit,这并不意味着测试必须是“单元”,因为也可以用它进行功能测试,但我相信它不是功能测试工具的最佳选择。

    我会推荐你​​看看其他很棒的功能测试工具,比如 Behat (http://behat.org)。它不仅可以让您更舒适地使用功能测试,还可以在您的开发过程中使用 BDD(行为驱动开发)方法

    只是一个小例子,我们如何使用它对购物车进行功能测试http://www.youtube.com/watch?v=XIUmDGaaZWM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      相关资源
      最近更新 更多