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 kelas Assert
: 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. Gunakan PHPUnit_Extensions_DataProvider_ArrayDataProvider
untuk mencipta DataProvider tersuai:
$prophesize(new CustomMatcher())->contains(['foo', 'bar'])->shouldBeTrue();
Rangka kerja tersuai
🎜1 Buat pelari tersuai🎜🎜🎜Pelari bertanggungjawab untuk executing. Buat pelari tersuai menggunakanPHPUnit_Framework_TestSuite_DataProvider
: 🎜CustomBootstrapper::bootstrap();
PHPUnit_Util_Configuration
untuk mengatasi Bootstrapper: 🎜rrreee🎜🎜Kes 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: 🎜rrreeeAtas ialah kandungan terperinci Sambungan dan penyesuaian rangka kerja ujian unit PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!