Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHPUnit untuk ujian pengecualian dalam pembangunan PHP

Cara menggunakan PHPUnit untuk ujian pengecualian dalam pembangunan PHP

王林
王林asal
2023-06-27 09:21:07593semak imbas

PHP ialah bahasa pengaturcaraan popular yang menyediakan pembangun perisian dengan banyak ciri dan alatan yang kaya. Antaranya, PHPUnit ialah rangka kerja ujian PHP yang terkenal digunakan untuk membantu pembangun mencipta dan menjalankan pelbagai jenis ujian seperti ujian unit, ujian sistem dan ujian integrasi. Artikel ini akan memperkenalkan cara menggunakan PHPUnit untuk ujian pengecualian dalam pembangunan PHP, membantu anda mengawal kualiti dan kebolehpercayaan kod anda dengan lebih baik.

1. Apakah ujian anomali?

Pengujian pengecualian ialah sejenis ujian perisian yang dicirikan dengan menguji kelakuan sekeping kod apabila berhadapan dengan input atau situasi yang tidak dijangka. Ujian pengecualian boleh membantu pembangun menguji sama ada kod dalam keadaan tidak normal boleh mengendalikannya secara normal dan mengembalikan hasil output yang betul. Sebagai contoh, apabila menggunakan fungsi, jika parameter yang diluluskan tidak memenuhi keperluan fungsi, ia mungkin membuang pengecualian Tujuan ujian pengecualian adalah untuk menguji cara fungsi mengendalikan pengecualian.

Ujian pengecualian boleh membantu pembangun mencari dan membetulkan kemungkinan ralat tepat pada masanya, dan memastikan sistem boleh beroperasi secara normal apabila berhadapan dengan input dan situasi yang berbeza.

2. Bagaimanakah PHPUnit menjalankan ujian tidak normal?

PHPUnit ialah rangka kerja ujian PHP yang berkuasa yang menyediakan satu set API (antara muka pengaturcaraan aplikasi) yang membolehkan pembangun menulis pelbagai kes ujian dengan mudah, termasuk ujian pengecualian. API pengujian pengecualian PHPUnit terdiri daripada dua fungsi, iaitu fungsi expectException() dan expectExceptionMessage(). Fungsi

  1. expectException() Fungsi

expectException() digunakan untuk menguji sama ada kod itu akan membuang pengecualian dalam keadaan tertentu. Sintaksnya adalah seperti berikut:

/**
 * 测试函数是否抛出指定的异常
 * 
 * @param string $exceptionClassName
 *            异常的类名
 * @throws PHPUnit_Framework_AssertionFailedError 如果没有抛出异常或者抛出的异常类型不匹配
 */
public function expectException($exceptionClassName);

Fungsi ini menerima parameter jenis rentetan, menunjukkan nama kelas pengecualian untuk diuji. Apabila kod yang diuji tidak membuang pengecualian ini, PHPUnit akan membuang pengecualian PHPUnit_Framework_AssertionFailedError, menunjukkan bahawa ujian itu gagal.

Sebagai contoh, jika anda ingin menguji sama ada fungsi boleh membuang InvalidArgumentException apabila parameter haram dihantar, anda boleh menggunakan kod ujian berikut:

public function testInvalidArgumentException()
{
    $this->expectException(InvalidArgumentException::class);

    // 调用目标函数,并传入不合法的参数
    myFunction("invalidArg");
}

Dalam kod ujian ini, kami mula-mula menggunakan fungsi expectException() untuk menentukan sasaran. Jenis pengecualian yang harus dilemparkan oleh fungsi ialah InvalidArgumentException. Kemudian, kami memanggil fungsi sasaran myFunction() dan lulus dalam parameter haram. Jika fungsi membuang InvalidArgumentException semasa memproses parameter, ujian akan lulus jika tidak, ujian akan gagal dan membuang pengecualian PHPUnit_Framework_AssertionFailedError. Fungsi

  1. expectExceptionMessage()

fungsi expectExceptionMessage() digunakan untuk menguji sama ada mesej pengecualian memenuhi jangkaan apabila jenis pengecualian tertentu dilemparkan. Sintaksnya adalah seperti berikut:

/**
 * 测试函数抛出的异常消息是否符合期望
 *
 * @param string $expectedMessage
 *            期望的异常消息
 * @throws PHPUnit_Framework_AssertionFailedError 如果异常消息不符合期望
 */
public function expectExceptionMessage($expectedMessage);

Fungsi ini menerima parameter jenis rentetan, menunjukkan mesej pengecualian yang dijangkakan. Jika kod di bawah ujian melemparkan pengecualian, tetapi mesej pengecualian tidak konsisten dengan mesej pengecualian yang dijangkakan, PHPUnit akan membuang pengecualian PHPUnit_Framework_AssertionFailedError, yang menunjukkan bahawa ujian itu gagal.

Contohnya, jika anda ingin menguji bahawa fungsi membuang InvalidArgumentException apabila parameter haram dihantar, dan mesej pengecualian hendaklah "Argumen tidak sah", anda boleh menggunakan kod ujian berikut:

public function testInvalidArgumentExceptionMessage()
{
    $this->expectException(InvalidArgumentException::class);
    $this->expectExceptionMessage("Invalid argument");

    // 调用目标函数,并传入不合法的参数
    myFunction("invalidArg");
}

Dalam kod ujian ini, kami Mula-mula, gunakan fungsi expectException() untuk menentukan jenis pengecualian yang harus dilemparkan oleh fungsi sasaran sebagai InvalidArgumentException. Kemudian, kami menggunakan fungsi expectExceptionMessage() untuk menentukan mesej pengecualian sebagai "Argumen tidak sah". Akhir sekali, kami memanggil fungsi sasaran myFunction() dan lulus dalam parameter haram. Jika fungsi membuang InvalidArgumentException semasa memproses parameter, dan mesej pengecualian adalah seperti yang dijangkakan, ujian akan lulus jika tidak, ujian akan gagal dan membuang pengecualian PHPUnit_Framework_AssertionFailedError.

3. Ringkasan

PHPUnit menyediakan satu set API ujian pengecualian yang mudah dan mudah digunakan yang boleh membantu pembangun PHP menulis dan menjalankan pelbagai kes ujian dengan cepat. Semasa menjalankan ujian pengecualian, kita boleh menggunakan fungsi expectException() untuk menentukan jenis pengecualian yang akan diuji, dan fungsi expectExceptionMessage() untuk menentukan mesej pengecualian untuk memastikan bahawa kod boleh mengembalikan maklumat pengecualian dengan betul semasa mengendalikan pengecualian. Dengan menggunakan API ujian pengecualian PHPUnit, kami boleh mengawal kualiti dan kebolehpercayaan kod dengan lebih baik serta meningkatkan kestabilan dan kebolehselenggaraan sistem perisian.

Atas ialah kandungan terperinci Cara menggunakan PHPUnit untuk ujian pengecualian dalam pembangunan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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