Durch die Erweiterung und Anpassung des PHPUnit-Frameworks können Sie das Problem lösen, dass das ursprüngliche Framework Ihre Anforderungen nicht erfüllen kann. Im Hinblick auf die Erweiterung umfasst es benutzerdefinierte Assertionen, Matcher und DataProvider; im Hinblick auf die Anpassung umfasst es das Erstellen benutzerdefinierter Läufer und das Überschreiben von Bootstrapper. In praktischen Anwendungen können erweiterte Assertionen Sonderzeichen überprüfen, benutzerdefinierte Matcher können Listenelemente überprüfen und das Überschreiben von Bootstrapper kann das Ausführungszeitlimit erhöhen.
Erweiterung und Anpassung des PHP-Unit-Testing-Frameworks
Unit-Tests können die Codequalität erheblich verbessern, aber das native Framework erfüllt möglicherweise nicht alle Anforderungen. Durch Erweitern und Anpassen des Frameworks wird dieses Problem gelöst.
Erweiterungsmethoden
1. Benutzerdefinierte Behauptungen
PHPUnit bietet Behauptungsmethoden, aber manchmal sind benutzerdefinierte Behauptungen erforderlich. Erstellen Sie eine neue Assertionsmethode mit der Klasse 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 überprüft, ob ein Wert bestimmte Bedingungen erfüllt. Erstellen Sie einen benutzerdefinierten Matcher mit der Bibliothekprophesize
: CustomAssertions::assertTrueWithMessage( strpos($string, "\t") !== false, "String does not contain a tab character" );
DataProvider bietet eine benutzerdefinierte Quelle für Testdaten. Verwenden Sie PHPUnit_Extensions_DataProvider_ArrayDataProvider
, um einen benutzerdefinierten DataProvider zu erstellen:
$prophesize(new CustomMatcher())->contains(['foo', 'bar'])->shouldBeTrue();
Angepasstes Framework
🎜1 Erstellen Sie einen benutzerdefinierten Runner🎜🎜🎜Der Runner ist für die Ausführung von Tests verantwortlich. Erstellen Sie einen benutzerdefinierten Läufer mitPHPUnit_Framework_TestSuite_DataProvider
: 🎜CustomBootstrapper::bootstrap();
phpunit_util_configuration
, um stootstrapper zu überschreiben: 🎜rrreee🎜🎜Practical Fall 🎜🎜🎜🎜 Erweiterte Behauptung: 🎜Verifizieren Sie das Vorhandensein von Sonderzeichen rrreee🎜🎜 Bootstrapper überschreiben: 🎜 Ausführungs-Timeout-Limit auf 300 Sekunden erhöhen: 🎜rrreeeDas obige ist der detaillierte Inhalt vonErweiterung und Anpassung des PHP-Unit-Testing-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!