PHP 개발자에게 코드 커버리지 테스트를 위해 PHPUnit을 사용하는 것은 매우 중요한 작업입니다. 코드 커버리지 테스트는 개발자가 자신이 작성한 코드에 테스트되지 않은 부분이 있는지, 테스트 커버리지가 충분히 높은지 확인하는 데 도움이 됩니다. 이 기사에서는 코드 커버리지 테스트에 PHPUnit을 사용하는 방법을 소개합니다.
먼저 PHPUnit을 설치해야 합니다. Composer를 사용하여 PHPUnit을 설치할 수 있습니다.
composer require --dev phpunit/phpunit
설치가 완료된 후 터미널에서 다음 명령을 실행하여 PHPUnit이 성공적으로 설치되었는지 확인할 수 있습니다.
php vendor/bin/phpunit --version
다음으로 테스트를 실행하기 전에 PHPUnit을 구성해야 합니다. 다음 내용으로 프로젝트의 루트 디렉터리에 phpunit.xml 파일을 만듭니다.
<?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false"> <testsuites> <testsuite name="Example Test Suite"> <directory>tests</directory> </testsuite> </testsuites> <filter> <whitelist processUncoveredFilesFromWhitelist="true"> <directory suffix=".php">src</directory> </whitelist> </filter> </phpunit>
이 구성 파일은 테스트를 실행할 때 포함해야 하는 파일을 PHPUnit에 알려주고 테스트 실행 중 일부 오류도 구성합니다.
테스트 코드를 작성하기 전에 아래의 간단한 예를 살펴보겠습니다.
<?php class Foo { public function bar() { return true; } }
이것은 부울 값을 반환하는 bar()라는 공개 메서드가 포함된 매우 간단한 PHP 클래스입니다. 이제 이 클래스가 예상대로 작동하는지 확인하는 테스트를 작성해야 합니다. FooTest.php라는 테스트 디렉터리에 다음 내용으로 테스트 파일을 만듭니다.
<?php use PHPUnitFrameworkTestCase; class FooTest extends TestCase { /** @test */ public function it_should_return_true() { $foo = new Foo; $this->assertTrue($foo->bar()); } }
이 테스트는 매우 간단합니다. Foo 클래스를 인스턴스화하고 bar() 메서드가 true를 반환하는지 확인합니다. 이제 테스트를 실행하고 PHPUnit에서 생성된 적용 범위 보고서를 볼 수 있습니다. 터미널에서 다음 명령을 실행하세요.
php vendor/bin/phpunit --coverage-html coverage
이 명령은 HTML 커버리지 보고서를 생성하고 프로젝트 루트 디렉터리 아래의 커버리지 디렉터리에 저장합니다. 보고서를 열면 Foo 클래스의 코드 적용 범위가 100%임을 확인할 수 있습니다. 이는 우리가 작성한 테스트가 Foo 클래스의 모든 코드를 다루었음을 의미합니다.
일반적으로 PHPUnit은 고품질 PHP 코드를 작성하는 데 도움이 되는 매우 강력한 테스트 도구입니다. 코드 범위 테스트는 PHPUnit의 핵심 기능으로, 우리가 작성한 테스트가 코드의 모든 부분을 포괄하도록 보장합니다. 프로젝트의 코드 적용 범위 테스트에 PHPUnit을 사용하면 코드 품질을 크게 향상하고 잠재적인 오류와 허점을 피할 수 있습니다.
위 내용은 PHP 개발에서 코드 적용 범위 테스트에 PHPUnit을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!