Cara menggunakan PHPUnit untuk ujian unit PHP

WBOY
Lepaskan: 2023-05-12 08:46:01
asal
1139 orang telah melayarinya

Dengan perkembangan industri pembangunan perisian, ujian secara beransur-ansur menjadi bahagian yang sangat diperlukan. Sebagai bahagian paling asas dalam ujian perisian, ujian unit bukan sahaja boleh meningkatkan kualiti kod, tetapi juga mempercepatkan pembangunan dan penyelenggaraan kod pembangun. Dalam bidang PHP, PHPUnit ialah rangka kerja ujian unit yang sangat popular, yang menyediakan pelbagai fungsi untuk membantu kami menulis kes ujian berkualiti tinggi. Dalam artikel ini, kami akan membincangkan cara menggunakan PHPUnit untuk ujian unit PHP.

  1. Pasang PHPUnit

Sebelum menggunakan PHPUnit, kita perlu memasangnya terlebih dahulu. PHPUnit ialah perpustakaan PHP yang boleh dipasang menggunakan Komposer. Daripada akar projek anda, jalankan arahan berikut:

composer require --dev phpunit/phpunit
Salin selepas log masuk

Ini akan menambah PHPUnit pada projek anda sebagai pergantungan pembangunan.

  1. Menulis kes ujian

Menulis kes ujian biasanya merupakan langkah pertama dalam menggunakan PHPUnit. Kes ujian ialah skrip yang menguji satu atau lebih fungsi atau kaedah. Katakan kita mempunyai kelas Kalkulator:

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

Kita boleh menggunakan kes ujian untuk menguji kaedah tambah dalam kelas Kalkulator:

use PHPUnitFrameworkTestCase;

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

Dalam kes ujian ini, kami mencipta ujian yang dipanggil kelas Ujian CalculatorTest , yang mewarisi kelas PHPUnitFrameworkTestCase. Kami juga menulis kaedah ujian bernama testAdd, di mana kami mencipta tika Kalkulator dan melaksanakan kaedah tambah, dan akhirnya menggunakan $this->assertEquals untuk menguji sama ada hasil yang dikembalikan oleh kaedah tambah adalah sama dengan nilai yang dijangkakan.

  1. Menjalankan Kes Ujian

Setelah kami menulis kes ujian, kami boleh menggunakan PHPUnit untuk menjalankannya. Daripada akar projek kami, jalankan arahan berikut:

vendor/bin/phpunit
Salin selepas log masuk

Ini akan menjalankan PHPUnit dan melaksanakan semua kes ujian yang tersedia. Jika anda hanya mahu menjalankan kelas ujian atau kaedah ujian tertentu, anda boleh menggunakan arahan berikut:

vendor/bin/phpunit tests/CalculatorTest.php
vendor/bin/phpunit --filter testAdd tests/CalculatorTest.php
Salin selepas log masuk
  1. Menggunakan Penegasan

PHPUnit menyediakan pelbagai jenis fungsi penegasan , boleh digunakan untuk menguji sama ada nilai pulangan fungsi atau kaedah memenuhi jangkaan kami. Berikut ialah beberapa fungsi penegasan yang paling biasa digunakan dalam PHPUnit:

  • assertTrue($value): Uji sama ada $value is true
  • assertFalse($value): Uji sama ada $ value is false
  • assertEquals($expected, $actual): Uji sama ada $actual sama dengan $expected
  • assertNotEquals($expected, $actual): Uji sama ada $actual tidak sama dengan $expected
  • assertSame($expected, $actual): Uji sama ada $actual adalah sama dengan $expected
  • assertNotSame($expected, $actual): Uji sama ada $actual berbeza daripada $ dijangka
  • assertNull($ value): Uji sama ada $value is null
  • assertNotNull($value): Uji sama ada $value is not null
  • assertInstanceOf($expected, $ actual): Uji sama ada $actual ialah $expected Instance of
  • assertNotInstanceOf($expected, $actual): Uji sama ada $actual bukan instance $expected
  1. Gunakan pembekal data

Kadangkala kita perlu menguji sama ada fungsi atau kaedah boleh mengembalikan hasil dengan betul untuk input yang berbeza. Pada masa ini kita boleh menggunakan fungsi pembekal data PHPUnit. Pembekal data ialah kaedah yang menyediakan satu set parameter, setiap satunya adalah koleksi data yang boleh diuji.

Dalam contoh berikut, kami telah menulis pembekal data untuk kaedah tambah kelas Kalkulator, yang menyediakan data input yang berbeza dan output yang dijangkakan.

class CalculatorTest extends TestCase {
    /**
     * @dataProvider additionProvider
     */
    public function testAdd($a, $b, $expected) {
        $calculator = new Calculator();
        $result = $calculator->add($a, $b);
        $this->assertEquals($expected, $result);
    }

    public function additionProvider() {
        return [
            [0, 0, 0],
            [0, 1, 1],
            [1, 0, 1],
            [1, 1, 2],
            [2, 3, 5],
            [-1, 1, 0],
            [10, -5, 5]
        ];
    }
}
Salin selepas log masuk

Dalam kes ujian ini, kami menggunakan anotasi @DataProvider untuk memberitahu PHPUnit tempat mencari pembekal data. Kami menulis pembekal data yang dipanggil additionalProvider di mana kami menyediakan data input yang berbeza dan output yang dijangkakan. Dalam kaedah ujian testAdd, kami lulus data ini secara langsung dan mengujinya.

  1. Menggunakan Objek Olok-olok

Apabila kita menguji kaedah dalam objek, kita mungkin tidak mahu bergantung pada kelas lain atau sumber luaran. Pada masa ini kita boleh menggunakan objek Mock PHPUnit untuk mensimulasikan kebergantungan ini. Objek olok-olok ialah objek olok-olok yang menyediakan antara muka yang sama, tetapi ia sebenarnya tidak dibuat seketika.

Dalam contoh berikut, kami menulis objek Mock untuk kaedah tambah dalam kelas Kalkulator untuk mensimulasikan kebergantungan luaran.

class CalculatorTest extends TestCase {
    public function testAdd() {
        $mock = $this->getMockBuilder('Dependency')
                     ->getMock();
        $mock->expects($this->once())
             ->method('getValue')
             ->will($this->returnValue(5));

        $calculator = new Calculator($mock);
        $result = $calculator->add(2, 3);
        $this->assertEquals(10, $result);
    }
}
Salin selepas log masuk

Dalam kes ujian ini, kami menggunakan kaedah getMockBuilder untuk mencipta objek Mock bernama Dependency. Kemudian kami menjangkakan kaedah getValue objek Mock dipanggil sekali dan mengembalikan 5. Akhir sekali kita menyerahkan objek Mock ini kepada pembina kelas Kalkulator.

Ringkasan

Dalam artikel ini, kami mempelajari cara menggunakan PHPUnit untuk ujian unit PHP. Kami memasang PHPUnit, menulis kes ujian, menjalankan kes ujian dan menggunakan penegasan, penyedia data dan objek Mock. Melalui langkah ini, kami boleh menulis kes ujian berkualiti tinggi untuk menguji kod kami untuk meningkatkan kualiti kod dan mempercepatkan pembangunan dan penyelenggaraan.

Atas ialah kandungan terperinci Cara menggunakan PHPUnit untuk ujian unit PHP. 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