Laravel-设置测试数据库

Laravel-设置测试数据库,laravel,phpunit,Laravel,Phpunit,在我的laravel应用程序中,我有一大堆迁移和db种子数据。 在app/config/testing/database.php中,我设置了一个mysql数据库进行测试 我已经用migrate和db:seed命令填充了测试数据库,指定了测试环境 这工作得很好,但我想在每次运行phpunit时调用这些命令。如果它在设置中这样做,那么每次测试调用它所需的时间就很长 我也可以在setUpBeforeClass中调用它,这样更好,但如果我测试10个类,则调用时间更长 当我运行phpunit时,有没有办法

在我的laravel应用程序中,我有一大堆迁移和db种子数据。 在app/config/testing/database.php中,我设置了一个mysql数据库进行测试

我已经用
migrate
db:seed
命令填充了测试数据库,指定了测试环境

这工作得很好,但我想在每次运行
phpunit
时调用这些命令。如果它在设置中这样做,那么每次测试调用它所需的时间就很长

我也可以在
setUpBeforeClass
中调用它,这样更好,但如果我测试10个类,则调用时间更长


当我运行
phpunit
时,有没有办法只运行一次呢?

现在我已经在tests/TestCase.php中完成了这项工作

class TestCase extends Illuminate\Foundation\Testing\TestCase {

    public static $setupDatabase = true;

    public function setUp()
    {
        parent::setUp();
        if(self::$setupDatabase)
        {
            $this->setupDatabase();
        }
    }

    public function setupDatabase()
    {
        Artisan::call('migrate');
        Artisan::call('db:seed');
        self::$setupDatabase = false;
    }

    ....

这似乎可行,但感觉不太理想,但这意味着如果我需要为测试重置数据库,我可以轻松地重新设置数据库…

您可以使用
使用数据库迁移特征: