PHPUnit フレームワークを拡張およびカスタマイズすることで、元のフレームワークではニーズを満たせないという問題を解決できます。拡張に関しては、カスタム アサーション、Matcher、DataProvider が含まれ、カスタマイズに関しては、カスタム ランナーの作成とブートストラップのオーバーライドが含まれます。実際のアプリケーションでは、拡張アサーションで特殊文字を検証したり、カスタム Matcher でリスト要素を検証したり、Bootstrapper をオーバーライドして実行タイムアウト制限を増やすことができます。
PHP単体テストフレームワークの拡張とカスタマイズ
単体テストはコードの品質を大幅に向上させることができますが、ネイティブフレームワークはすべてのニーズを満たしていない可能性があります。フレームワークを拡張およびカスタマイズすると、この問題は解決されます。
拡張メソッド
1. カスタムアサーション
PHPUnit はアサーションメソッドを提供しますが、場合によってはカスタムアサーションが必要になります。 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 は、値が特定の条件を満たしているかどうかを検証します。prophesize
ライブラリを使用してカスタム Matcher を作成します: CustomAssertions::assertTrueWithMessage( strpos($string, "\t") !== false, "String does not contain a tab character" );
DataProvider はテスト データのカスタム ソースを提供します。 PHPUnit_Extensions_DataProvider_ArrayDataProvider
を使用してカスタム DataProvider を作成します。
$prophesize(new CustomMatcher())->contains(['foo', 'bar'])->shouldBeTrue();
カスタマイズされたフレームワーク
🎜1. カスタム ランナーを作成します🎜🎜🎜 ランナーはテストを実行します。PHPUnit_Framework_TestSuite_DataProvider
を使用してカスタム ランナーを作成します: 🎜CustomBootstrapper::bootstrap();
PHPUnit_Util_Configuration
を使用して、ブートストラップをオーバーライドします: 🎜rrreee🎜🎜実際のケース 🎜🎜🎜🎜拡張アサーション: 🎜特殊文字の存在を確認します: 🎜rrreee🎜🎜カスタム マッチャー: 🎜リストに要素が含まれていることを確認します: 🎜 rrreee🎜🎜 ブートストラップをオーバーライドする: 🎜 実行タイムアウト制限を 300 秒に増やす: 🎜rrreee以上がPHP単体テストフレームワークの拡張とカスタマイズの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。