Rumah >pembangunan bahagian belakang >tutorial php >Menguasai Ujian Unit dalam PHP: Alat, Rangka Kerja dan Amalan Terbaik
Ujian unit ialah bahagian penting dalam kitaran hayat pembangunan perisian yang memastikan komponen atau fungsi individu sesuatu aplikasi berkelakuan seperti yang diharapkan. Dalam PHP, ujian unit membantu mengesahkan ketepatan kod, membolehkan pembangun menangkap pepijat lebih awal dan meningkatkan kebolehpercayaan dan kebolehselenggaraan kod.
Melaksanakan ujian unit dalam PHP melibatkan ujian penulisan untuk kepingan kecil fungsi (unit) terpencil, biasanya menggunakan rangka kerja dan alatan ujian khusus. Di bawah ialah penjelasan mendalam tentang cara melaksanakan ujian unit dalam PHP, alatan dan rangka kerja yang biasa digunakan serta amalan terbaik untuk diikuti.
Ujian unit melibatkan ujian unit kod individu (disebut sebagai fungsi atau kaedah) secara berasingan untuk memastikan ia berfungsi seperti yang diharapkan. Matlamat utama ujian unit adalah untuk mengesahkan ketepatan setiap unit, membantu menangkap pepijat lebih awal dan membenarkan pembangun memfaktorkan semula atau mengubah suai kod dengan yakin.
Ujian unit menyemak kelakuan fungsi atau kaedah untuk input tertentu dan membandingkan output sebenar dengan output yang dijangkakan. Ujian unit biasanya diautomatikkan dan boleh dijalankan secara berterusan untuk mengekalkan kualiti kod yang tinggi.
Beberapa alatan dan rangka kerja dalam PHP boleh membantu anda menulis dan melaksanakan ujian unit. Yang paling popular ialah PHPUnit, Mockery, dan PHPSpec. Di bawah ialah gambaran keseluruhan alatan ini:
PHPUnit ialah rangka kerja ujian yang paling banyak digunakan untuk PHP. Ia ialah alat sumber terbuka yang menyediakan cara mudah untuk menulis dan menjalankan ujian unit. PHPUnit diilhamkan oleh keluarga rangka kerja xUnit (seperti JUnit untuk Java dan NUnit untuk .NET).
composer require --dev phpunit/phpunit
// Example: A simple Calculator class class Calculator { public function add($a, $b) { return $a + $b; } } // PHPUnit test for Calculator class use PHPUnit\Framework\TestCase; class CalculatorTest extends TestCase { public function testAdd() { $calculator = new Calculator(); $result = $calculator->add(2, 3); $this->assertEquals(5, $result); } }
Untuk menjalankan ujian menggunakan PHPUnit, gunakan arahan berikut:
./vendor/bin/phpunit tests/CalculatorTest.php
Ciri PHPUnit:
Ejekan ialah rangka kerja mengejek yang digunakan bersama PHPUnit untuk mengejek objek dan mensimulasikan gelagat kebergantungan. Ia membolehkan kawalan yang lebih terperinci apabila menguji komponen dengan kebergantungan luaran, seperti sambungan pangkalan data, API atau perkhidmatan.
composer require --dev mockery/mockery
use Mockery; use PHPUnit\Framework\TestCase; class UserServiceTest extends TestCase { public function testGetUserName() { // Create a mock UserRepository $userRepository = Mockery::mock(UserRepository::class); $userRepository->shouldReceive('find')->with(1)->andReturn(new User('John Doe')); $userService = new UserService($userRepository); $userName = $userService->getUserName(1); $this->assertEquals('John Doe', $userName); } public function tearDown(): void { Mockery::close(); // Clean up mock objects } }
PHPSpec ialah rangka kerja pembangunan dipacu tingkah laku (BDD) untuk PHP. Walaupun PHPUnit memfokuskan pada menulis ujian untuk unit kod, PHPSpec memfokuskan pada menentukan gelagat kelas dan objek. Ia membolehkan ujian menulis dalam bahasa yang lebih semula jadi dan sering digunakan untuk memacu pembangunan dari luar ke dalam.
composer require --dev phpspec/phpspec
// Spec for Calculator class class CalculatorSpec extends \PhpSpec\ObjectBehavior { function it_adds_two_numbers() { $this->add(2, 3)->shouldReturn(5); } }
Berikut ialah beberapa amalan terbaik untuk diikuti semasa menulis ujian unit dalam PHP:
Setiap ujian hendaklah hanya mengesahkan satu gelagat atau fungsi tertentu. Ini menjadikan ujian lebih mudah difahami, diselenggara dan nyahpepijat.
Ujian unit hendaklah bebas antara satu sama lain. Setiap ujian harus dijalankan secara berasingan daripada yang lain untuk memastikan ia boleh dipercayai dan boleh dihasilkan semula.
Jika kod anda bergantung pada perkhidmatan luaran, pangkalan data atau API, gunakan ejekan untuk mensimulasikan tingkah laku mereka. Ini menghalang ujian anda daripada bergantung pada sistem luaran sebenar, memastikan ia berjalan lebih pantas dan lebih dipercayai.
Mengikuti TDD (Pembangunan Dipacu Ujian) membantu memastikan kod anda ditulis dengan mengambil kira kebolehujian. Tulis ujian anda dahulu, kemudian tulis kod yang membolehkannya lulus.
Gunakan nama ujian deskriptif yang menerangkan tingkah laku yang diuji. Ini membantu orang lain (dan diri masa depan anda) memahami tujuan setiap ujian.
composer require --dev phpunit/phpunit
Sepadukan ujian anda ke dalam saluran paip penyepaduan berterusan (CI) anda supaya ia dijalankan secara automatik pada setiap komit. Ini memastikan perubahan baharu tidak merosakkan kefungsian sedia ada.
Mari kita lihat contoh lengkap unit menguji kelas dengan PHPUnit.
Kelas untuk Ujian (Kalkulator.php):
// Example: A simple Calculator class class Calculator { public function add($a, $b) { return $a + $b; } } // PHPUnit test for Calculator class use PHPUnit\Framework\TestCase; class CalculatorTest extends TestCase { public function testAdd() { $calculator = new Calculator(); $result = $calculator->add(2, 3); $this->assertEquals(5, $result); } }
Kelas Ujian Unit (CalculatorTest.php):
./vendor/bin/phpunit tests/CalculatorTest.php
Menjalankan ujian:
composer require --dev mockery/mockery
Ujian unit ialah bahagian penting dalam memastikan kualiti perisian, terutamanya dalam aplikasi PHP. Dengan menggunakan rangka kerja ujian seperti PHPUnit, Mockery dan PHPSpec, anda boleh menulis ujian automatik yang membantu mengesahkan ketepatan kod anda. Ujian unit memberikan beberapa faedah, seperti pengesanan pepijat awal, keyakinan kod semasa pemfaktoran semula dan kualiti perisian keseluruhan yang lebih baik.
Dengan mengikuti amalan terbaik seperti menulis ujian terpencil, deskriptif dan menggunakan ejekan untuk mensimulasikan kebergantungan, anda boleh menulis ujian unit yang berkesan dan boleh diselenggara yang menyumbang kepada kejayaan projek jangka panjang.
Atas ialah kandungan terperinci Menguasai Ujian Unit dalam PHP: Alat, Rangka Kerja dan Amalan Terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!