Ujian unit dan liputan kod menggunakan PHP dan PHPUnit

PHPz
Lepaskan: 2023-06-25 13:14:01
asal
1257 orang telah melayarinya

Dengan pembangunan pembangunan perisian, semakin ramai pembangun menyedari kepentingan ujian unit. Ujian unit ialah kaedah ujian biasa dalam pembangunan perisian yang memastikan ketepatan dan kestabilan kod dengan menguji ketepatan modul berfungsi tunggal (juga dipanggil "unit"). Dalam artikel ini, kami akan membincangkan cara untuk mencapai ujian unit dan liputan kod menggunakan PHP dan PHPUnit.

PHPUnit ialah rangka kerja ujian sumber terbuka untuk menguji kod PHP. Ia menyokong pelbagai jenis ujian termasuk ujian unit, ujian fungsian dan ujian penyepaduan. Dalam artikel ini, kami akan menumpukan pada ujian unit.

Mengapa ujian unit dan liputan kod?

Apabila membangunkan perisian, kami biasanya cuba menguji kod kami sebanyak mungkin. Ujian unit ialah kaedah ujian yang lebih cekap yang boleh menguji secara berterusan semasa proses pembangunan untuk memastikan ketepatan kod. Selain itu, ia mempunyai faedah berikut:

  1. Meningkatkan kebolehselenggaraan kod: Melalui ujian unit, anda boleh menyemak dengan cepat ketepatan kod selepas mengubah suainya untuk memastikan fungsi asal tidak rosak selepas pengubahsuaian.
  2. Tingkatkan keteguhan kod: Dengan menguji setiap unit, potensi masalah dan ralat dalam kod boleh ditemui, supaya masalah ini dapat ditangani lebih awal untuk mengelakkan masalah dalam persekitaran pengeluaran.
  3. Kurangkan kos pengembangan dan pemfaktoran semula: Ujian unit boleh membantu anda mencari masalah dengan cepat apabila mengubah suai kod sedia ada, dengan itu menguruskan perubahan dalam pangkalan kod dengan lebih berkesan.

Liputan kod ialah cara untuk menilai liputan ujian. Ia memberitahu anda sejauh mana kod anda telah diuji. Contohnya, jika liputan ujian anda ialah 60%, ini bermakna kod ujian anda meliputi 60% kod sumber. Dengan liputan kod, anda boleh mengukur sama ada perisian anda berkualiti tinggi dan sama ada anda memerlukan lebih banyak kes ujian.

Mulakan ujian unit dengan PHPUnit

Sebelum meneruskan, anda perlu memastikan anda telah memasang PHPUnit. Boleh dipasang melalui Komposer. Cipta fail composer.json dalam direktori projek anda dan tambahkan kebergantungan PHPUnit:

{
  "require-dev": {
    "phpunit/phpunit": "^7.0"
  }
}
Salin selepas log masuk

Anda boleh memasang PHPUnit dengan menjalankan arahan berikut:

composer install --dev
Salin selepas log masuk

Seterusnya, kami akan menunjukkan cara menulis ujian unit mudah. Bayangkan anda sedang menulis kelas PHP yang dipanggil "Kalkulator" yang melaksanakan operasi aritmetik asas. Berikut ialah kodnya:

class Calculator {
    public function add($a, $b) {
        return $a + $b;
    }

    public function subtract($a, $b) {
        return $a - $b;
    }
}
Salin selepas log masuk

Sekarang, tulis kelas ujian yang dipanggil "CalculatorTest" yang akan menguji kelas Kalkulator kami:

use PHPUnitFrameworkTestCase;

class CalculatorTest extends TestCase {
    public function testAdd() {
        $calculator = new Calculator();
        $result = $calculator->add(1, 2);
        $this->assertEquals(3, $result);
    }

    public function testSubtract() {
        $calculator = new Calculator();
        $result = $calculator->subtract(2, 1);
        $this->assertEquals(1, $result);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami telah menggunakan salah satu kaedah ujian asas yang disediakan oleh PHPUnit - assertEquals(). Ia membandingkan nilai ujian dengan nilai yang dijangkakan dan membuang pengecualian jika ia tidak sama.

Sekarang jalankan ujian PHPUnit:

./vendor/bin/phpunit CalculatorTest.php
Salin selepas log masuk

Jika semua ujian lulus, output berikut akan dipaparkan:

PHPUnit 7.5.1 by Sebastian Bergmann and contributors.

..

Time: 42 ms, Memory: 4.00 MB

OK (2 tests, 2 assertions)
Salin selepas log masuk

Perhatikan bahawa helah kecil digunakan dalam contoh ini, iaitu mentakrifkan kelas Kalkulator pada masa yang sama dalam fail yang sama CalculatorTest.php dan kelas ujian yang sepadan CalculatorTest.

Fahami kaedah ujian asas PHPUnit

PHPUnit menyediakan pelbagai kaedah ujian Berikut ialah contoh penggunaan beberapa kaedah asas:

  1. assertEquals($expected, $actual, $message): Bandingkan nilai yang dijangkakan. dan nilai sebenar.
  2. assertTrue($value, $message): Tentukan sama ada ungkapan itu benar.
  3. assertFalse($value, $message): Tentukan sama ada ungkapan itu palsu.
  4. assertNull($value, $message): Tentukan sama ada sesuatu nilai itu batal.
  5. assertSame($expected, $actual, $message): Membandingkan sama ada nilai jangkaan dan nilai sebenar adalah sama sepenuhnya (termasuk jenis).
  6. assertInstanceOf($expected, $actual, $message): Tentukan sama ada objek ialah tika kelas tertentu.

Lebih banyak kaedah ujian untuk PHPUnit boleh didapati dalam dokumentasi.

Ujian Liputan Kod dengan PHPUnit

Kami telah melihat cara menggunakan PHPUnit untuk ujian unit. Sekarang, mari kita fahami cara menggunakan PHPUnit untuk ujian liputan kod.

Untuk mencapai liputan kod, kita perlu menambah pilihan --coverage-html semasa menjalankan PHPUnit. Ia akan menghasilkan laporan liputan kod HTML. Jalankan sahaja arahan berikut:

./vendor/bin/phpunit --coverage-html reports tests
Salin selepas log masuk

Arahan ini menjalankan semua kes ujian dalam direktori ujian projek kami dan menjana laporan liputan kod dalam direktori laporan selepas dijalankan.

Selepas ini, anda boleh membuka laporan HTML dalam pelayar anda untuk melihat liputan kod sumber.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan PHPUnit untuk ujian unit dan liputan kod. Dengan ujian unit dan liputan kod, anda boleh meningkatkan kualiti dan kestabilan projek serta mengurangkan kos penskalaan dan pemfaktoran semula.

Apabila anda menulis kod PHP, ingat untuk menulis ujian unit yang baik. Ujian unit yang baik digunakan untuk mengesahkan ketepatan kod, mencegah ralat regresi dan memastikan keteguhan kod. Dengan menulis kes ujian yang baik, anda boleh menangkap masalah lebih awal dan membetulkannya sebelum ia berlaku.

Atas ialah kandungan terperinci Ujian unit dan liputan kod menggunakan PHP dan PHPUnit. 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