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.
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
Ini akan menambah PHPUnit pada projek anda sebagai pergantungan pembangunan.
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; } }
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); } }
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.
Setelah kami menulis kes ujian, kami boleh menggunakan PHPUnit untuk menjalankannya. Daripada akar projek kami, jalankan arahan berikut:
vendor/bin/phpunit
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
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:
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] ]; } }
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.
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); } }
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!