Programster's Blog

Tutorials focusing on Linux, programming, and open-source

PHPUnit - Installation

Install composer if you haven't already.

Navigate to your project folder, or create a new folder for your project.

Fetch the latest stable version of phpunit through composer.

composer require "phpunit/phpunit"

Dev Only

The above command will install phpunit as a core part of your project. If you are developing something like a package, then you probably want it to only be installed if developing the package. In such case, modify your composer.json file to have it within a require-dev block like so:

    "require": {
        "php": ">=8.0.0",
    },
    "require-dev" : {",
        "phpunit/phpunit": "^9.5"
    },
}

Autoloading

You will want your tests to automatically be autoloaded, but probably only for dev, so be sure to add them to an autoload-dev block like so:

    "autoload": {
        "psr-4": {
            "Programster\\MyPackage\\": "src/",
            "Programster\\MyPackage\\Exceptions\\": "src/exceptions"
        }
    },
    "autoload-dev": {
        "psr-4": { "Programster\\MyPackage\\Tests\\": "phpunit-tests/" }
    }

... and then just be sure to set the namespace in your test file accordingly.

E.g.

<?php

declare(strict_types=1);

namespace Programster\MyPackage\Tests;

final class TestFieldTypes extends \PHPUnit\Framework\TestCase
{
    public function testSomething()
    {
    }
}

Execute

To execute PHPunit from having installed through composer run the following command from where your composer.json file is.

./vendor/bin/phpunit tests/*

This will execute all the tests within the tests folder.

Optional Extras

PHP_Invoker

A utility class for invoking callables with a timeout. This package is required to enforce test timeouts in strict mode.

composer require "phpunit/php-invoker"

DbUnit

Support database interaction testing.

composer require "phpunit/dbunit"

PHPUnit_Selenium

Selenium RC integration for PHPUnit.

composer require "phpunit/phpunit-selenium"

References

Last updated: 16th September 2021
First published: 16th August 2018

This blog is created by Stuart Page

I'm a freelance web developer and technology consultant based in Surrey, UK, with over 10 years experience in web development, DevOps, Linux Administration, and IT solutions.

Need support with your infrastructure or web services?

Get in touch