将PHPUnit添加到现有的Cakephp 2.0中

时间:2015-03-04 17:08:48

标签: cakephp phpunit

有谁知道如何将PHPUnit添加到未使用composer创建的现有CakePHP 2.0项目中?

我正在尝试将PHPUnit添加到现有的CakePHP 2.0项目中,该项目不是用composer创建的,我无法让CakePHP看到PHPUnit已经安装。我正在使用Windows机器。

到目前为止,我采取了以下步骤:

  1. 通过composer
  2. 全局安装PHPUnit 3.7.32
  3. 将PHPUnit添加到我的路径
  4. 从命令行验证安装,即phpunit --version
  5. 在php.ini
  6. 中添加PHP include_path的位置
  7. 重新启动服务器
  8. 使用Composer安装一个新的CakePHP项目(测试CakePHP可以看到PHPUnit)
  9. 已成功测试安装了PHPUnit的新项目
  10. 提前致谢。

3 个答案:

答案 0 :(得分:2)

我终于能够将PHPUnit添加到一个不是用composer创建的现有CakePHP项目中。

我查看了CakeTestSuiteDispatcher.php文件,看看它试图找到PHPUnit的位置。它在供应商,app / Vendor和include_path中查找名为PHPUnit的文件夹,其中包含Autoload.php文件(感谢Nick Zinger对此的帮助)。一旦复制了这个文件夹,CakePHP就会看到安装了PHPUnit,但在包含依赖项(代码覆盖率,计时器等)时会抛出错误。以下是我为使一切工作而采取的步骤。

  1. 确保您在app / config / Database.php中设置了测试数据库,否则您的主数据库可能会被覆盖或损坏
  2. 使用PHPUnit(我使用版本3.7.38)通过Composer将新的CakePHP(版本2.6.2)项目安装到新位置
  3. 将内部PHPUnit文件夹与新项目中的Autoload.php文件(phpunit / phpunit / PHPUnit)一起复制到旧项目的cakephp vendor文件夹(app app外)
  4. 将以下文件夹从phpunit文件夹(从步骤1中使用composer创建的项目)复制到现有供应商文件夹(应用程序外部的文件夹):
    • PHP-代码覆盖
    • PHP-文件迭代器
    • PHP-文本模板
    • PHP-计时器
    • PHP-令牌流
    • PHPUnit的-模拟对象
  5. 在现有项目的以下文件中更新require_once路径(我使用绝对路径):
    • 的PHPUnit / Autoload.php
    • PHP-代码覆盖/ PHP /代码覆盖率/ Autoload.php
  6. 完成这些更改后,CakePHP测试套件可用,我能够运行我的测试用例。这适用于我的CakePHP项目(v2.0.6)和我的同事CakePHP项目(v2.0.6)。

    我希望这有助于其他人遇到同样的问题。

答案 1 :(得分:0)

如果您仍然遇到此问题,我可以采取以下措施:

  1. https://github.com/sebastianbergmann/phpunit/tree/3.7

  2. 下载来源
  3. 将内部PHPUnit文件夹(包含Autoload.php的文件夹)复制到包含php的路径中。确保包含路径,并且可以直接从该路径访问PHPUnit / Autoload.php。

  4. 重启apache

  5. 在上述之后它应该可以工作。

答案 2 :(得分:-1)

您需要在终端中运行以下代码。 (路径:在你的项目cakephp中)

composer require --dev phpunit/phpunit:"3.7.38"