【问题标题】:How to use phpunit installed from composer?如何使用从作曲家安装的 phpunit?
【发布时间】:2012-11-25 16:53:04
【问题描述】:

我想开始用 phpunit 对我的 symfony 2 应用程序进行单元测试。我使用composer安装了phpunit(每个项目依赖)。 http://www.phpunit.de/manual/current/en/installation.html

我现在如何在 Zend Server 上运行 phpunit 命令?我没有安装梨。

【问题讨论】:

    标签: symfony phpunit composer-php


    【解决方案1】:

    我喜欢在composer.json 中定义一个脚本,这样我就可以运行了:

    $ composer test
    # ... runs phpunit
    

    为此,我需要修改composer.json 以包含这样的条目:

    "scripts": {
        "test": [
            "phpunit tests/*.php"
        ]
    }
    

    【讨论】:

      【解决方案2】:

      更多的作曲方式呢?

      composer exec phpunit
      

      它可以用于vendor/bin目录下的每个二进制文件。

      【讨论】:

      • 脚本 phpunit 处理返回错误代码 2 的 __exec_command 事件
      【解决方案3】:

      对于 Symfony 3,将 "phpunit/phpunit": "5.4.*" 添加到您的 composer.json 中的 "require-dev" 部分,然后从应用程序根目录运行测试:

      ./vendor/bin/phpunit tests
      

      【讨论】:

      • 谢谢,已解决。 :)
      • 当然,如果您使用的是旧项目布局,则命令类似于 ./vendor/bin/phpunit src/AppBundle/Tests
      【解决方案4】:

      将其添加为开发依赖项,在您的项目目录中:

      composer require --dev "phpunit/phpunit=4.8.*"
      

      现在可以执行安装的phpunit:

      ./vendor/bin/phpunit
      

      【讨论】:

      • 您现在可以使用版本:5.3.*。
      【解决方案5】:

      更新(2014 年 12 月 2 日)

      Composer 和 PHPUnit 再次更改了它们的命令。 install 命令还会安装开发依赖项:

      作曲家.json:

      ...
      "require-dev": {
          "phpunit/phpunit": "3.7.*"
      },
      

      运行它:

      $ composer.phar update --prefer-dist --dev
      

      现在您可以通过以下方式运行测试:

      $ bin/phpunit -c /app
      

      干杯,

      【讨论】:

        【解决方案6】:

        如果您按照文档操作,您已将 phpunit/phpunit 依赖项设置为“开发依赖项”。

        如果你没有composer,你需要先安装它。这在文档中进行了解释:Installation *nix 或 Installation Windows。 如果您已经安装了 composer,最好通过运行 self-update 命令将 composer 更新到最新版本:

        $ php composer.phar self-update
        

        完成后,您需要安装所有依赖项,包括开发依赖项。这是通过使用--dev 开关运行update 命令来完成的:

        $ php composer.phar update --dev
        

        所有依赖项都安装在vendor 目录中。 PHPunit 从控制台运行。 Composer 自动将控制台文件放在vendor/bin 目录中。你需要在那里执行phpunit文件:

        $ vendor/bin/phpunit -c app/
        

        -c 开关告诉 PHPUnit 在app 目录中查找配置文件,Symfony2 已经设置了正确的配置来运行<bundle>/Tests 目录中的所有测试。

        更新 (05-04-2013)

        Composer 已更改其更新/安装命令。 update 默认会安装 dev 依赖,如果你想安装 dev 依赖,你需要使用--dev 选项。

        更新 (11-06-2013)

        Composer 再次更改了他们的命令,install 命令也将安装开发依赖项。

        【讨论】:

        • 啊哈!错过了 --dev :p 无论如何,我现在收到以下错误:Warning: include(C:\Program Files (x86)\Zend\Apache2\Program Files (x86)\Zend\Ap ache2\htdocs\project1\vendor\phpunit\phpunit\PHPUnit\TextUI\Command.php): failed to open stream: No such file or directory in C:\Program Files (x86)\Zend\Apache 2\htdocs\project1\vendor\composer\ClassLoader.php on line 150. 该文件确实存在。
        • 我在这里继续我的错误:stackoverflow.com/questions/13765651/…
        • @WouterJ 您的意思是“更新将不会默认安装开发依赖项”吗?
        • @Danack no,update 命令会默认安装dev依赖
        • @WouterJ 呃,看来我需要再次运行 composer self-update。
        猜你喜欢
        • 2014-10-22
        • 2016-07-05
        • 1970-01-01
        • 2017-03-13
        • 2014-01-29
        • 2016-08-14
        • 2013-05-26
        • 2015-04-15
        • 2021-01-30
        相关资源
        最近更新 更多