PHPUnit 프레임워크를 확장하고 사용자 정의하면 원래 프레임워크가 요구 사항을 충족할 수 없는 문제를 해결할 수 있습니다. 확장 측면에서는 사용자 정의 어설션, Matcher 및 DataProvider가 포함되며 사용자 정의 실행기 생성 및 Bootstrapper 재정의가 포함됩니다. 실제 애플리케이션에서 확장 어설션은 특수 문자를 확인할 수 있고, 사용자 정의 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🎜🎜Custom Matcher: 🎜목록에 요소가 포함되어 있는지 확인하세요. 🎜 rrreee🎜🎜 부트스트래퍼 재정의: 🎜 실행 시간 초과 제한을 300초로 늘립니다.: 🎜rrreee위 내용은 PHP 단위 테스트 프레임워크의 확장 및 사용자 정의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!