How to Run Laravel Database Seeder from PHPUnit Test setUp?

The DatabaseSeeder can be instantiated on its own, and its call method is public.

All you need to do in your CourseTypesTest class would be

(new DatabaseSeeder())->call(TestDatabaseSeeder::class);

Or you can make use of Laravel's app helper as follow

app(DatabaseSeeder::class)->call(TestDatabaseSeeder::class);

The problem is empty space in your --class argument. If you take close look at array '--class' => 'TestDatabaseSeeder ' there is space in the end ... this is the problem. Change it to '--class' => 'TestDatabaseSeeder' and it should work fine.


Since version 5.8 you can do:

// Run the DatabaseSeeder...
$this->seed();

// Run a single seeder...
$this->seed(OrderStatusesTableSeeder::class);

Take a look at the documentation