PHP 단위 테스트 적용 범위 모범 사례에는 PHPUnit의 CodeCoverage 도구 사용, 단위 테스트 격리, Mock 객체 및 스텁 사용, 모든 분기 및 경로 포함, 자동 생성기 사용이 포함됩니다. 이러한 모범 사례를 통해 애플리케이션의 품질과 안정성을 향상할 수 있습니다.
PHP 단위 테스트: 테스트 범위 모범 사례
소프트웨어 개발에서 테스트 범위는 테스트 도구 모음의 효율성을 측정하는 척도입니다. 테스트된 코드의 비율을 나타냅니다. 높은 테스트 적용 범위는 애플리케이션의 품질과 안정성을 향상시키는 데 도움이 됩니다. 다음은 PHP 단위 테스트의 테스트 적용 범위를 개선하기 위한 몇 가지 모범 사례입니다.
PHPUnit의 CodeCoverage 도구 사용
PHPUnit은 테스트 실행 중에 적용되는 파일과 줄을 생성할 수 있는 내장 CodeCoverage 도구를 제공합니다. 이를 사용하려면 PHPUnit.xml 구성 파일에 다음 코드를 추가하세요.
<phpunit backupGlobals="false" backupStaticAttributes="false" bootstrap="vendor/autoload.php" colors="true" verbose="true" coverageClover="coverage.clover"> </phpunit>
격리된 단위 테스트
격리된 단위 테스트는 격리된 환경에서만 각 메서드나 클래스를 테스트합니다. 이는 @dataProvider
注解或 PHPUnit 的 setUp()
和 tearDown()
메서드를 사용하여 달성할 수 있습니다.
public function dataProvider() { return [ ['input' => 1, 'expected' => 2], ['input' => 2, 'expected' => 4] ]; } /** * @dataProvider dataProvider */ public function testSum(int $input, int $expected) { $this->assertEquals($expected, $this->sum($input)); }
모의 개체 및 스텁 사용
모의 개체 및 스텁을 사용하여 종속성을 모의할 수 있으므로 단위 테스트를 격리하고 테스트 적용 범위를 향상할 수 있습니다.
$calculatorMock = $this->createMock(Calculator::class); $calculatorMock->expects($this->once()) ->method('sum') ->with(1, 2) ->will($this->returnValue(3)); $this->assertEquals(3, $calculator->sum(1, 2));
모든 분기와 경로를 포함하세요
테스트에서 가능한 모든 코드 경로와 분기가 포함되는지 확인하세요. 조건문, 루프 및 예외 처리를 사용하여 테스트의 복잡성을 높입니다.
자동 생성기 사용
PhpMetrics 및 PHPCS와 같은 도구를 사용하여 테스트 코드를 자동으로 생성할 수 있습니다. 이러한 도구는 코드를 분석하고 해당 테스트 사례를 생성하여 적용 범위를 향상시킬 수 있습니다.
실용 사례
다음 PHP 코드를 고려하세요.
<?php class Calculator { public function sum(int $a, int $b) { if ($a < 0 || $b < 0) { throw new InvalidArgumentException('Input should be non-negative.'); } return $a + $b; } }
다음은 모든 코드 경로를 포괄하는 단위 테스트입니다.
<?php use PHPUnit\Framework\TestCase; class CalculatorTest extends TestCase { public function dataProvider() { return [ [-1, 2, 'InvalidArgumentException'], [1, -2, 'InvalidArgumentException'], [1, 2, 3] ]; } /** * @dataProvider dataProvider */ public function testSum(int $a, int $b, $expected) { $calculator = new Calculator(); if (is_a($expected, 'InvalidArgumentException')) { $this->expectException($expected); } $this->assertEquals($expected, $calculator->sum($a, $b)); } }
위 내용은 PHP 단위 테스트: 테스트 적용 범위에 대한 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!