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:
composer require --dev "orchestra/testbench"Next, you can run the following command to scaffold your package with the recommended setup:
vendor/bin/testbench workbench:installVersion Compatibility
| Laravel | Testbench |
|---|---|
| 5.x.x | 3.x.x |
| 6.x | 4.x |
| 7.x | 5.x |
| 8.x | 6.x |
| 9.x | 7.x |
| 10.x | 8.x |
| 11.x | 9.x |
| 12.x | 10.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.
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:
<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.
vendor/bin/phpunit --testsuite=FeatureAutoloading 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:
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:
providers:
- Laravel\Sanctum\SanctumServiceProvider
- Workbench\App\Providers\WorkbenchServiceProviderUsing Custom Laravel Skeleton
Using WithWorkbench will make TestCase uses laravel configuration value from testbench.yaml:
laravel: ./skeleton