php-actions / phpunit

Run PHPUnit tests in Github Actions.
108 stars 24 forks source link
PHP Actions for Github

Run PHPUnit tests in Github Actions.

PHPUnit is a programmer-oriented testing framework for PHP.

It is an instance of the xUnit architecture for unit testing frameworks.

Usage

Create your Github Workflow configuration in .github/workflows/ci.yml or similar.

name: CI

on: [push]

jobs:
  build-test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - uses: php-actions/composer@v6 # or alternative dependency management
    - uses: php-actions/phpunit@v3
    # ... then your own project steps ...

Version numbers

This action is released with semantic version numbers, but also tagged so the latest major release's tag always points to the latest release within the matching major version.

Please feel free to use uses: php-actions/phpunit@v3 to always run the latest version of v3, or uses: php-actions/phpunit@v3.0.0 to specify the exact release.

Example

We've put together an extremely simple example application that uses php-actions/phpunit. Check it out here: https://github.com/php-actions/example-phpunit.

Inputs

The following configuration options are available:

The syntax for passing in a custom input is the following:

...

jobs:
  unit-tests:

    ...

    - name: PHPUnit tests
      uses: php-actions/phpunit@v3
      with:
        configuration: "custom/path/to/phpunit.xml"
        memory_limit: "256M"

If you require other configurations of phpunit, please request them in the Github issue tracker

PHP and PHPUnit versions

It's possible to run any version of PHPUnit under any version of PHP, with any PHP extensions you require. This is configured with the following inputs:

Please note the version number specified within your Action configuration must match your composer.json major version number. For example, if your composer.json requires phpunit/phpunit 8.5.8, you must use the version: 8.5.8 input, as major versions of PHPUnit are incompatible with each other.

If you require a specific version that is not compatible with Github Actions for some reason, please make a request in the Github issue tracker.

Coverage

To store the code coverage, use the coverage_* input that is appropriate for your needs. Coverage information is made possible by using the xdebug extension, which will be required to be added to the php_extensions input to work.

Example:

jobs:
  unit-tests:

    ...

    - name: PHPUnit tests
      uses: php-actions/phpunit@v3
      with:
        php_extensions: "xdebug"
        coverage_clover: "coverage/clover.xml"

The above example will output coverage information to the terminal. Pass a file path to output to a file.

If you want to report coverage information somewhere, please see the code-coverage action.

Github Actions releases

Previously, the Github Actions release version numbers were in sync with the PHPUnit version, but this imposed too many limitations. For the next 12 months (until 30th November 2021), v7, v8 and v9 branches will still point to their existing commits, but we have reverted to v1-based Actions releases, allowing PHPUnit version number to be specified from your configuration, using the version input variable.


If you found this repository helpful, please consider sponsoring the developer.