Skip to content

Introduction ​

Testbench simplifies the process to create feature and integration tests for your Laravel packages without massive configuration and build steps.

Installing ​

You can install Testbench using the following command:

bash
composer require --dev "orchestra/testbench"

Next, you can run the following command to scaffold your package with the recommended setup:

bash
vendor/bin/testbench workbench:install

Version Compatibility ​

LaravelTestbench
5.x.x3.x.x
6.x4.x
7.x5.x
8.x6.x
9.x7.x
10.x8.x
11.x9.x
12.x10.x

Configuration ​

Please refer to Configuration documentation for further details.

Getting Started ​

To use Testbench Component, all you need to do is extend Orchestra\Testbench\TestCase instead of PHPUnit\Framework\TestCase. The fixture app booted by Orchestra\Testbench\TestCase is predefined to follow the base application skeleton of Laravel.

php
class TestCase extends \PHPUnit\Framework\TestCase
class TestCase extends \Orchestra\Testbench\TestCase
{
    //
}

PHPUnit Configuration ​

You can separate your tests in your phpunit.xml file by providing different test suites, allowing you to run your Feature tests on demand.

For example:

xml
<testsuites>
    <testsuite name="Feature">
        <directory suffix="Test.php">./tests/Feature</directory>
    </testsuite>
    <testsuite name="Unit">
        <directory suffix="Test.php">./tests/Unit</directory>
    </testsuite>
</testsuites>

Run only your feature tests by running PHPUnit with the --testsuite=Feature option.

bash
vendor/bin/phpunit --testsuite=Feature

Autoloading using testbench.yaml ​

Testbench will use the configuration values defined in testbench.yaml and use its value when the TestCase class uses Orchestra\Testbench\Concerns\WithWorkbench trait:

php
use Orchestra\Testbench\Concerns\WithWorkbench; 

class TestCase extends \Orchestra\Testbench\TestCase
{
    use WithWorkbench; 
}

Package Service Providers ​

Using WithWorkbench will make TestCase uses providers configuration value from testbench.yaml:

yaml
providers:
  - Laravel\Sanctum\SanctumServiceProvider
  - Workbench\App\Providers\WorkbenchServiceProvider

Using Custom Laravel Skeleton ​

Using WithWorkbench will make TestCase uses laravel configuration value from testbench.yaml:

yaml
laravel: ./skeleton