How to use phpunit installed from composer?

SymfonyPhpunitComposer Php

Symfony Problem Overview


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.

Symfony Solutions


Solution 1 - Symfony

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.

Solution 2 - Symfony

What about more composer way?

composer exec phpunit

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

Solution 3 - Symfony

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,

Solution 4 - Symfony

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"
    ]
}

Solution 5 - Symfony

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

Solution 6 - Symfony

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTjorriemorrieView Question on Stackoverflow
Solution 1 - SymfonyWouter JView Answer on Stackoverflow
Solution 2 - SymfonyStalkAlexView Answer on Stackoverflow
Solution 3 - SymfonymedinaView Answer on Stackoverflow
Solution 4 - SymfonyFlimmView Answer on Stackoverflow
Solution 5 - SymfonyAndréView Answer on Stackoverflow
Solution 6 - SymfonyAlexView Answer on Stackoverflow