温馨提示×

Debian环境下Laravel测试如何进行

小樊
51
2025-09-19 15:34:44
栏目: 智能运维

1. 准备Debian环境
在开始前,确保Debian系统已更新并安装必要工具:

sudo apt update && sudo apt upgrade -y

安装PHP(需7.3+版本)及常用扩展(支持Laravel和测试):

sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php  # 添加Ondřej Surý的PHP仓库(支持最新版本)
sudo apt update
sudo apt install -y php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

安装Composer(PHP依赖管理工具):

curl -sS https://getcomposer.org/installer | sudo mv composer.phar /usr/local/bin/composer

2. 创建/配置Laravel项目
若未创建项目,使用Composer生成新项目:

composer create-project --prefer-dist laravel/laravel your_project_name
cd your_project_name

复制.env.example生成.env文件,并配置数据库连接(替换为实际信息):

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_test  # 测试专用数据库
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password

生成应用密钥:

php artisan key:generate

3. 配置测试环境
Laravel通过.env.testing文件覆盖测试环境配置(推荐),避免污染生产/开发环境。创建并编辑该文件:

cp .env .env.testing

修改.env.testing中的数据库配置(指向测试数据库):

APP_ENV=testing
APP_DEBUG=true
DB_DATABASE=laravel_test

若需临时切换环境,运行测试时可添加--env=testing参数。

4. 安装PHPUnit
Laravel默认集成PHPUnit,若未安装,通过Composer添加开发依赖:

composer require --dev phpunit/phpunit

5. 编写测试用例
Laravel的测试文件存放在tests目录,分为单元测试(Unit子目录)和功能测试(Feature子目录)。

  • 创建测试类:使用Artisan命令生成(如功能测试):
    php artisan make:test ExampleTest
    
    这会在tests/Feature下生成ExampleTest.php,继承Tests\TestCase(包含基础测试方法)。
  • 编写测试逻辑:以简单的HTTP请求测试为例(检查首页状态码):
    <?php
    namespace Tests\Feature;
    use Illuminate\Foundation\Testing\RefreshDatabase; // 数据库刷新 trait
    use Tests\TestCase;
    class ExampleTest extends TestCase
    {
        use RefreshDatabase; // 每次测试后重置数据库
        
        /** @test */
        public function homepage_returns_200_status()
        {
            $response = $this->get('/');
            $response->assertStatus(200); // 断言状态码为200
        }
    }
    
    注:@test注解或方法名以test开头均可标记为测试方法。

6. 运行测试
使用PHPUnit执行测试:

./vendor/bin/phpunit
  • 运行特定测试类
    ./vendor/bin/phpunit --filter ExampleTest
    
  • 显示详细输出
    ./vendor/bin/phpunit --verbose
    
  • 并行加速测试(Laravel 9+):
    php artisan test --parallel
    

7. 常用测试增强工具

  • 数据库迁移与填充:测试前自动迁移数据库并填充种子数据(需在测试类中使用RefreshDatabase trait):
    use Illuminate\Foundation\Testing\RefreshDatabase;
    class ExampleTest extends TestCase
    {
        use RefreshDatabase;
        // ...
    }
    
  • 浏览器测试(Dusk):测试前端交互(如表单提交、JavaScript),需安装Laravel Dusk:
    composer require --dev laravel/dusk
    php artisan dusk:install  # 生成Dusk配置
    
    编写Dusk测试(如登录功能):
    <?php
    namespace Tests\DuskTestCase;
    use Laravel\Dusk\Browser;
    use Tests\DuskTestCase;
    class LoginTest extends DuskTestCase
    {
        /** @test */
        public function user_can_login()
        {
            $this->browse(function (Browser $browser) {
                $browser->visit('/login')
                        ->type('email', 'user@example.com')
                        ->type('password', 'password')
                        ->press('Login')
                        ->assertPathIs('/home');
            });
        }
    }
    
    运行Dusk测试:
    php artisan dusk
    

注意事项

  • 测试数据库应与生产/开发数据库分离,避免数据冲突。
  • 使用RefreshDatabase trait可自动回滚数据库迁移,确保每次测试从干净状态开始。
  • 自动化测试可集成到CI/CD流程(如GitHub Actions),实现代码提交后自动运行测试。

0