首頁  >  文章  >  後端開發  >  PHP 單元測試與持續交付的集成

PHP 單元測試與持續交付的集成

WBOY
WBOY原創
2024-05-06 18:45:01511瀏覽

摘要:透過整合 PHPUnit 單元測試框架和 CI/CD 管道,可以提高 PHP 程式碼品質並加速軟體交付。 PHPUnit 允許建立測試案例來驗證元件功能,而 GitLab CI 和 GitHub Actions 等 CI/CD 工具可自動執行這些測試。範例:透過測試案例驗證身份驗證控制器,以確保登入功能能如預期運作。

PHP 单元测试与持续交付的集成

PHP 單元測試與持續交付的整合

在當今快速發展的軟體開發世界中,自動化測試和持續交付(CI/CD) 已變得至關重要。本文將介紹如何在 PHP 專案中整合 PHPUnit 單元測試框架與 CI/CD 管道,從而提高程式碼品質並加速軟體交付。

PHP 單元測試

什麼是 PHPUnit?

PHPUnit 是一個用於 PHP 應用程式的開源單元測試框架。它允許您編寫單元測試,以驗證應用程式的單一元件是否按預期工作。

建立測試案例

要建立PHPUnit 測試案例,請建立一個PHP 文件,以Test 結尾,並在其中編寫如下程式碼:

<?php

namespace Tests;

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    public function testExample()
    {
        $this->assertTrue(true);
    }
}

在這個範例中,ExampleTest 類別繼承了TestCase 類,並且包含一個名為testExample 的測試方法。

整合PHPUnit 與CI/CD

使用GitLab CI

GitLab CI 是一個流行的CI/CD 工具,它可以自動建置、測試和部署程式碼。若要將 PHPUnit 測試整合到 GitLab CI,請在 .gitlab-ci.yml 檔案中新增以下內容:

image: php:7.4

stages:
  - test

test:
  stage: test
  script: vendor/bin/phpunit

此組態將使用 PHP 7.4 映像建置和執行 PHPUnit 測試。

使用 GitHub Actions

GitHub Actions 是另一個 CI/CD 工具,它支援在不同的平台上運行工作。若要將PHPUnit 測試整合至GitHub Actions,請在.github/workflows/main.yml 檔案中新增以下內容:

name: CI

on:
  push:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: shivammathur/setup-php@v2
        with:
          php-version: 7.4
      - run: composer install
      - run: vendor/bin/phpunit

此配置將使用PHP 7.4 映像檔在Ubuntu 伺服器上執行PHPUnit 測試。

實戰案例

場景:驗證身份驗證控制器

#考慮一個 PHP Web 應用程序,我們希望測試身份驗證控制器。可以使用以下測試案例來驗證登入方法:

<?php

namespace Tests;

use PHPUnit\Framework\TestCase;
use App\Http\Controllers\Auth\LoginController;

class AuthControllerTest extends TestCase
{
    public function testLogin()
    {
        // Mock request and response
        $request = Request::create('/login', 'POST', ['email' => 'john@example.com', 'password' => 'secret']);

        $controller = new LoginController();
        $response = $controller->login($request);

        // Assert that the response contains a success message
        $this->assertStringContainsString('Login successful', $response->getContent());
    }
}

透過將此單元測試整合到 CI/CD 管道中,我們可以確保在每次程式碼變更是,身份驗證控制器都按預期工作。

以上是PHP 單元測試與持續交付的集成的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn