Rumah pembangunan bahagian belakang tutorial php Cara menggunakan PHPUnit untuk ujian unit PHP

Cara menggunakan PHPUnit untuk ujian unit PHP

May 12, 2023 am 08:13 AM
php Ujian unit phpunit

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

CakePHP Bekerja dengan Pangkalan Data CakePHP Bekerja dengan Pangkalan Data Sep 10, 2024 pm 05:25 PM

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

See all articles