ChatGPT解决这个技术问题 Extra ChatGPT

How to use phpunit installed from composer?

I want to start unit testing my symfony 2 application with phpunit. I installed phpunit using composer (per-project dependancy). http://www.phpunit.de/manual/current/en/installation.html

How do I now run the phpunit command on Zend Server? I don't have pear installed.


W
Wouter J

If you followed the documentation, you have set the phpunit/phpunit dependency as a 'dev-dependency'.

If you don't have composer, you need to install it first. This is explained in the documentation: Installation *nix or Installation Windows. If you already installed composer, it is a good practise to update composer to the latest version by running the self-update command:

$ php composer.phar self-update

After your have done that, you need to install all dependencies, including the dev dependencies. This is done by running the update command with the --dev switch:

$ php composer.phar update --dev

All the dependencies are installed in the vendor directory. PHPunit runs from the console. Composer automatic put the console files inside the vendor/bin directory. You need to execute the phpunit file in there:

$ vendor/bin/phpunit -c app/

The -c switch tells PHPUnit to look for the configuration file in the app directory, Symfony2 already set up the correct configuration to run all tests that are in the <bundle>/Tests directory.

UPDATE (05-04-2013)

Composer has changed their update/install commands. update will install dev dependencies by default and if you want to install dev dependencies, you need to use the --dev option.

UPDATE (11-06-2013)

Composer has changed their commands again, the install command will also install dev dependencies.


Aha! missed the --dev :p Anyway, I get the following error now: 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. The file does exist though.
I continued my error here: stackoverflow.com/questions/13765651/…
@WouterJ Did you mean "update will not install dev dependencies by dafault"?
@Danack no, the update command will install dev dependencies by default
@WouterJ Er, looks like I need to run composer self-update again.
S
StalkAlex

What about more composer way?

composer exec phpunit

It can be used for every binary file in vendor/bin directory.


Script phpunit handling the __exec_command event returned with error code 2
m
medina

UPDATE (12-02-2014)

Composer and PHPUnit have changed their commands again. The install command will also install dev dependencies:

Composer.json:

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

Run it:

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

Now you can run your tests by:

$ bin/phpunit -c /app

Cheers,


F
Flimm

I like to define a script within composer.json, so that I can just run:

$ composer test
# ... runs phpunit

To do so, I need to modify composer.json to contain an entry like this:

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

A
André

For Symfony 3 add "phpunit/phpunit": "5.4.*" to the "require-dev" section in your composer.json and run tests from the applications root directory with:

./vendor/bin/phpunit tests

Thanks, fixed that. :)
Of course if you're using a legacy project layout, the command would be something like ./vendor/bin/phpunit src/AppBundle/Tests
A
Alex

Add it as dev dependency, in your project directory:

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

The installed phpunit can now be executed with:

./vendor/bin/phpunit

You can now use version: 5.3.* instead.