Sambungan dan penyesuaian rangka kerja ujian unit PHP

王林
Lepaskan: 2024-05-06 13:57:02
asal
1156 orang telah melayarinya

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.

PHP 单元测试框架的扩展与定制

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); } }
Salin selepas log masuk

2. 自定义 Matcher

Matcher 验证值是否符合特定条件。使用prophesize库创建自定义 Matcher:

class CustomMatcher { public function isEven($value) { return $value % 2 == 0; } } $propecy = $prophesize(new CustomMatcher()); $propecy->isEven(6)->shouldBeTrue();
Salin selepas log masuk

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());
Salin selepas log masuk

定制框架

1. 创建自定义运行器

运行器负责执行测试。使用PHPUnit_Framework_TestSuite_DataProvider创建自定义运行器:

class CustomTestRunner extends PHPUnit_Framework_TestSuite_DataProvider { protected function setUp(): void { // 自定义设置 } protected function tearDown(): void { // 自定义清理 } }
Salin selepas log masuk

2. 覆盖 Bootstrapper

Bootstrapper 在测试运行之前设置测试运行环境。使用PHPUnit_Util_Configuration

class CustomBootstrapper { public static function bootstrap() { // 自定义引导 PHPUnit_Util_Configuration::$defaultEnforceTimeLimit = 300; } } PHPUnit_Util_Configuration::$bootstrap = 'CustomBootstrapper::bootstrap';
Salin selepas log masuk

2 Custom Matcher

Matcher mengesahkan sama ada nilai memenuhi syarat tertentu. Buat Matcher tersuai menggunakan pustaka prophesize:

CustomAssertions::assertTrueWithMessage( strpos($string, "\t") !== false, "String does not contain a tab character" );
Salin selepas log masuk
3. Laksanakan DataProvider

DataProvider menyediakan sumber tersuai untuk data ujian. GunakanPHPUnit_Extensions_DataProvider_ArrayDataProvideruntuk mencipta DataProvider tersuai:

$prophesize(new CustomMatcher())->contains(['foo', 'bar'])->shouldBeTrue();
Salin selepas log masuk

Rangka kerja tersuai

1 Buat pelari tersuaiPelari bertanggungjawab untuk executing. Buat pelari tersuai menggunakan PHPUnit_Framework_TestSuite_DataProvider:
CustomBootstrapper::bootstrap();
Salin selepas log masuk
2 Override BootstrapperBootstrapper Sediakan persekitaran berjalan ujian sebelum ujian dijalankan. Gunakan 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!