Dengan memanjangkan dan menyesuaikan rangka kerja PHPUnit, anda boleh menyelesaikan masalah yang rangka kerja asal tidak dapat memenuhi keperluan anda. Dari segi pelanjutan, ia termasuk penegasan tersuai, Matcher dan Penyedia Data dari segi penyesuaian, ia melibatkan penciptaan pelari tersuai dan Bootstrapper yang mengatasi. Dalam aplikasi praktikal, penegasan lanjutan boleh mengesahkan aksara khas, Matchers tersuai boleh mengesahkan elemen senarai, dan Bootstrapper yang mengatasi boleh meningkatkan had tamat masa pelaksanaan.

Pelanjutan dan penyesuaian rangka kerja ujian unit PHP
Ujian unit boleh meningkatkan kualiti kod dengan ketara, tetapi rangka kerja asli mungkin tidak memenuhi semua keperluan. Memperluas dan menyesuaikan rangka kerja menyelesaikan masalah ini.
Kaedah lanjutan
1. Penegasan tersuai
PHPUnit menyediakan kaedah penegasan, tetapi kadangkala penegasan tersuai diperlukan. Cipta kaedah penegasan baharu menggunakan kelasAssert:Assert类创建新的断言方法:
class CustomAssertions extends PHPUnit_Framework_Assert { public static function assertTrueWithMessage($condition, string $message) { self::assertTrue($condition, $message); } }
2. 自定义 Matcher
Matcher 验证值是否符合特定条件。使用prophesize库创建自定义 Matcher:
class CustomMatcher { public function isEven($value) { return $value % 2 == 0; } } $propecy = $prophesize(new CustomMatcher()); $propecy->isEven(6)->shouldBeTrue();
3. 实现 DataProvider
DataProvider 为测试数据提供自定义来源。使用PHPUnit_Extensions_DataProvider_ArrayDataProvider创建自定义 DataProvider:
class CustomDataProvider { public static function provideData() { return [ ['foo', 'bar'], ['baz', 'qux'] ]; } } $dataProvider = new PHPUnit_Extensions_DataProvider_ArrayDataProvider(CustomDataProvider::provideData());
定制框架
1. 创建自定义运行器
运行器负责执行测试。使用PHPUnit_Framework_TestSuite_DataProvider创建自定义运行器:
class CustomTestRunner extends PHPUnit_Framework_TestSuite_DataProvider { protected function setUp(): void { // 自定义设置 } protected function tearDown(): void { // 自定义清理 } }
2. 覆盖 Bootstrapper
Bootstrapper 在测试运行之前设置测试运行环境。使用PHPUnit_Util_Configuration
class CustomBootstrapper { public static function bootstrap() { // 自定义引导 PHPUnit_Util_Configuration::$defaultEnforceTimeLimit = 300; } } PHPUnit_Util_Configuration::$bootstrap = 'CustomBootstrapper::bootstrap';
2 Custom Matcher
Matcher mengesahkan sama ada nilai memenuhi syarat tertentu. Buat Matcher tersuai menggunakan pustakaprophesize:
CustomAssertions::assertTrueWithMessage( strpos($string, "\t") !== false, "String does not contain a tab character" );
DataProvider menyediakan sumber tersuai untuk data ujian. GunakanPHPUnit_Extensions_DataProvider_ArrayDataProvideruntuk mencipta DataProvider tersuai:
$prophesize(new CustomMatcher())->contains(['foo', 'bar'])->shouldBeTrue();
Rangka kerja tersuai
1 Buat pelari tersuaiPelari bertanggungjawab untuk executing. Buat pelari tersuai menggunakanPHPUnit_Framework_TestSuite_DataProvider:
CustomBootstrapper::bootstrap();
PHPUnit_Util_Configurationuntuk mengatasi Bootstrapper: rrreeeKes praktikal Pernyataan lanjutan: Sahkan kehadiran aksara khas: rrreee yang mengandungi elemen Matcher:V yang mengandungi Matcher:V rrreee Gantikan Bootstrapper: Tingkatkan had tamat masa pelaksanaan kepada 300 saat: rrreee
Atas ialah kandungan terperinci Sambungan dan penyesuaian rangka kerja ujian unit PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Bagaimana untuk membuka fail php
Bagaimana untuk mengalih keluar beberapa elemen pertama tatasusunan dalam php
Apa yang perlu dilakukan jika penyahserialisasian php gagal
Bagaimana untuk menyambungkan php ke pangkalan data mssql
Bagaimana untuk menyambung php ke pangkalan data mssql
Bagaimana untuk memuat naik html
Bagaimana untuk menyelesaikan aksara bercelaru dalam PHP
Bagaimana untuk membuka fail php pada telefon bimbit