Bagaimana untuk melaksanakan ujian unit dan liputan kod dalam projek PHP?
Pengenalan
Dalam proses pembangunan perisian, ujian unit adalah pautan yang sangat penting. Dengan menguji unit kod, kualiti kod boleh dipertingkatkan, kemungkinan ralat boleh dikurangkan, dan kestabilan dan kebolehpercayaan program dapat dipastikan. Liputan kod ialah ukuran ujian Ia boleh memberitahu kami jumlah kod yang dilindungi oleh ujian dan sama ada terdapat sebarang kes ujian yang hilang. Artikel ini akan memperkenalkan cara melaksanakan ujian unit dan liputan kod dalam projek PHP.
1. Pasang PHPUnit dan sambungan Xdebug
PHPUnit ialah rangka kerja ujian PHP yang popular yang menyokong pelbagai jenis ujian dan penegasan serta boleh membantu kami menulis dan menjalankan ujian unit. Sebelum kita mula, kita perlu memasang sambungan PHPUnit dan Xdebug.
Pasang PHPUnit:
Boleh dipasang melalui Composer, jalankan arahan berikut:
composer require --dev phpunit/phpunit
Pasang sambungan Xdebug:
Xdebug ialah sambungan penyahpepijatan PHP yang berkuasa yang menyediakan fungsi pelaporan liputan kod. Anda boleh memasang sambungan Xdebug melalui arahan berikut:
pecl install xdebug
Selepas pemasangan selesai, anda perlu mendayakan sambungan Xdebug dalam fail php.ini dan menambah konfigurasi berikut:
zend_extension=path/to/xdebug.so
Mulakan semula PHP-FPM atau pelayan web untuk menjadikan konfigurasi berkuat kuasa.
2. Tulis kes ujian unit
Sebelum melaksanakan ujian unit, kita perlu menulis kes ujian, iaitu kod ujian untuk satu atau lebih fungsi, kaedah atau kelas. Kes ujian harus meliputi pelbagai senario dan keadaan sempadan untuk memastikan ketepatan kod.
Berikut ialah contoh mudah Kami menulis kelas Calculator
,其中包含两个方法add
和subtract
,然后编写对应的测试用例。
class CalculatorTest extends PHPUnitFrameworkTestCase { public function testAdd() { $calculator = new Calculator(); $result = $calculator->add(2, 3); $this->assertEquals(5, $result); } public function testSubtract() { $calculator = new Calculator(); $result = $calculator->subtract(5, 3); $this->assertEquals(2, $result); } }
三、运行单元测试
编写好测试用例后,我们可以使用PHPUnit来运行这些测试。
在项目根目录下,创建一个名为phpunit.xml
的配置文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="vendor/autoload.php"> <testsuites> <testsuite name="My Test Suite"> <directory>tests</directory> </testsuite> </testsuites> </phpunit>
在终端中,进入项目根目录,运行以下命令:
vendor/bin/phpunit
PHPUnit将自动查找并执行tests
目录下的测试用例文件,输出测试结果。
四、生成代码覆盖率报告
在运行单元测试的过程中,我们可以通过Xdebug扩展生成代码覆盖率报告,以了解测试覆盖了多少代码以及是否有遗漏的地方。
在phpunit.xml
配置文件中添加如下代码,启用代码覆盖率:
<coverage processUncoveredFiles="true"> <include> <directory>src</directory> </include> </coverage>
在终端中,重新运行单元测试命令:
vendor/bin/phpunit --coverage-html report/
执行完毕后,将在项目根目录下生成一个名为report
rrreee
phpunit.xml
dengan kandungan berikut: 🎜rrreee🎜🎜🎜Dalam terminal, masukkan direktori akar projek dan jalankan arahan berikut: 🎜 rrreee🎜PHPUnit akan mencari dan melaksanakan fail kes ujian secara automatik dalam direktori ujian
dan mengeluarkan keputusan ujian. 🎜🎜🎜🎜4. Hasilkan laporan liputan kod🎜Semasa proses menjalankan ujian unit, kami boleh menjana laporan liputan kod melalui sambungan Xdebug untuk memahami jumlah kod yang diliputi oleh ujian dan sama ada terdapat kawasan yang terlepas. 🎜🎜🎜🎜Tambah kod berikut dalam fail konfigurasi phpunit.xml
untuk mendayakan liputan kod: 🎜rrreee🎜🎜🎜Di terminal, jalankan semula arahan ujian unit: 🎜rrreee🎜Selepas pelaksanaan, Hasilkan folder bernama report
dalam direktori akar projek, yang mengandungi fail HTML laporan liputan kod. Buka fail HTML melalui penyemak imbas untuk melihat liputan kod. 🎜🎜🎜🎜Kesimpulan🎜Dengan menggunakan sambungan PHPUnit dan Xdebug, kami boleh melaksanakan ujian unit dan statistik liputan kod dengan mudah dalam projek PHP. Ini membantu meningkatkan kualiti dan kestabilan kod serta mengurangkan kemungkinan ralat. Saya harap artikel ini akan membantu anda dan membolehkan anda membangunkan dan menguji projek PHP dengan lebih baik. 🎜Atas ialah kandungan terperinci Bagaimana untuk melaksanakan ujian unit dan liputan kod dalam projek PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!