Rumah > pembangunan bahagian belakang > tutorial php > Pengujian Unit PHP: Amalan Terbaik untuk Liputan Ujian

Pengujian Unit PHP: Amalan Terbaik untuk Liputan Ujian

WBOY
Lepaskan: 2024-06-02 19:40:02
asal
332 orang telah melayarinya

Amalan terbaik liputan ujian unit PHP termasuk: menggunakan alat CodeCoverage PHPUnit, mengasingkan ujian unit, menggunakan objek Mock dan Stubs, meliputi semua cawangan dan laluan, dan menggunakan penjana automatik. Melalui amalan terbaik ini, anda boleh meningkatkan kualiti dan kebolehpercayaan aplikasi anda.

Pengujian Unit PHP: Amalan Terbaik untuk Liputan Ujian

Pengujian Unit PHP: Amalan Terbaik untuk Liputan Ujian

Dalam pembangunan perisian, liputan ujian ialah ukuran keberkesanan suite ujian. Ia mewakili peratusan kod yang diuji. Liputan ujian tinggi membantu meningkatkan kualiti dan kebolehpercayaan aplikasi anda. Berikut ialah beberapa amalan terbaik untuk meningkatkan liputan ujian untuk ujian unit PHP:

Gunakan alat CodeCoverage PHPUnit

PHPUnit menyediakan alat CodeCoverage terbina dalam yang boleh menjana fail dan baris yang diliputi semasa pelaksanaan ujian. Untuk menggunakannya, tambahkan kod berikut dalam fail konfigurasi PHPUnit.xml:

<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         verbose="true"
         coverageClover="coverage.clover">
</phpunit>
Salin selepas log masuk

Ujian unit terpencil

Ujian unit terpencil menguji setiap kaedah atau kelas hanya dalam persekitaran terpencil. Ini boleh dicapai menggunakan kaedah @dataProvider 注解或 PHPUnit 的 setUp()tearDown().

public function dataProvider() {
    return [
        ['input' => 1, 'expected' => 2],
        ['input' => 2, 'expected' => 4]
    ];
}

/**
 * @dataProvider dataProvider
 */
public function testSum(int $input, int $expected) {
    $this->assertEquals($expected, $this->sum($input));
}
Salin selepas log masuk

Menggunakan Objek Mock dan Stubs

Ojek dan Stub boleh digunakan untuk mengejek kebergantungan, dengan itu mengasingkan ujian unit dan meningkatkan liputan ujian.

$calculatorMock = $this->createMock(Calculator::class);
$calculatorMock->expects($this->once())
    ->method('sum')
    ->with(1, 2)
    ->will($this->returnValue(3));

$this->assertEquals(3, $calculator->sum(1, 2));
Salin selepas log masuk

Meliputi semua cawangan dan laluan

Pastikan ujian anda meliputi semua laluan dan cawangan kod yang mungkin. Gunakan pernyataan bersyarat, gelung dan pengendalian pengecualian untuk meningkatkan kerumitan ujian anda.

Gunakan Penjana Auto

Kod ujian boleh dijana secara automatik menggunakan alatan seperti PhpMetrics dan PHPCS. Alat ini boleh menganalisis kod dan menjana kes ujian yang sepadan, dengan itu meningkatkan liputan.

Kes praktikal

Pertimbangkan kod PHP berikut:

<?php
class Calculator {
    public function sum(int $a, int $b) {
        if ($a < 0 || $b < 0) {
            throw new InvalidArgumentException('Input should be non-negative.');
        }
        return $a + $b;
    }
}
Salin selepas log masuk

Berikut ialah ujian unit yang meliputi semua laluan kod:

<?php
use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase {
    public function dataProvider() {
        return [
            [-1, 2, 'InvalidArgumentException'],
            [1, -2, 'InvalidArgumentException'],
            [1, 2, 3]
        ];
    }

    /**
     * @dataProvider dataProvider
     */
    public function testSum(int $a, int $b, $expected) {
        $calculator = new Calculator();

        if (is_a($expected, 'InvalidArgumentException')) {
            $this->expectException($expected);
        }
        $this->assertEquals($expected, $calculator->sum($a, $b));
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Pengujian Unit PHP: Amalan Terbaik untuk Liputan Ujian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan