소프트웨어 개발 산업이 발전하면서 테스트는 점차 없어서는 안 될 부분이 되었습니다. 소프트웨어 테스팅의 가장 기본적인 부분인 단위 테스팅은 코드 품질을 향상시킬 뿐만 아니라 개발자의 코드 개발 및 유지 관리 속도를 높일 수 있습니다. PHP 분야에서 PHPUnit은 고품질 테스트 케이스를 작성하는 데 도움이 되는 다양한 기능을 제공하는 매우 인기 있는 단위 테스트 프레임워크입니다. 이 기사에서는 PHP 단위 테스트에 PHPUnit을 사용하는 방법을 다룹니다.
PHPUnit을 사용하기 전에 먼저 PHPUnit을 설치해야 합니다. PHPUnit은 Composer를 사용하여 설치할 수 있는 PHP 라이브러리입니다. 프로젝트 루트에서 다음 명령을 실행하세요:
composer require --dev phpunit/phpunit
이렇게 하면 PHPUnit이 개발 종속성으로 프로젝트에 추가됩니다.
테스트 케이스 작성은 일반적으로 PHPUnit을 사용할 때 첫 번째 단계입니다. 테스트 케이스는 하나 이상의 함수나 메소드를 테스트하는 스크립트입니다. Calculator 클래스가 있다고 가정합니다:
class Calculator { public function add($a, $b) { return $a + $b; } }
테스트 케이스를 사용하여 Calculator 클래스의 add 메소드를 테스트할 수 있습니다:
use PHPUnitFrameworkTestCase; class CalculatorTest extends TestCase { public function testAdd() { $calculator = new Calculator(); $result = $calculator->add(2, 3); $this->assertEquals(5, $result); } }
이 테스트 케이스에서는 PHPUnitFrameworkTestCase 클래스를 상속하는 CalculatorTest라는 테스트 클래스를 생성합니다. 우리는 또한 Calculator 인스턴스를 생성하고 add 메소드를 실행한 testAdd라는 테스트 메소드를 작성했으며, 마지막으로 $this->assertEquals를 사용하여 add 메소드에 의해 반환된 결과가 예상 값과 같은지 테스트했습니다.
테스트 케이스를 작성한 후에는 PHPUnit을 사용하여 실행할 수 있습니다. 프로젝트 루트에서 다음 명령을 실행합니다:
vendor/bin/phpunit
그러면 PHPUnit이 실행되고 사용 가능한 모든 테스트 사례가 실행됩니다. 특정 테스트 클래스나 테스트 메서드만 실행하려는 경우 다음 명령을 사용할 수 있습니다.
vendor/bin/phpunit tests/CalculatorTest.php vendor/bin/phpunit --filter testAdd tests/CalculatorTest.php
PHPUnit은 함수의 반환 값을 테스트하는 데 사용할 수 있는 다양한 어설션 함수를 제공합니다. 또는 방법은 우리의 기대에 부응합니다. 다음은 PHPUnit에서 가장 일반적으로 사용되는 어설션 함수 중 일부입니다.
경우에 따라 함수나 메서드가 다양한 입력에 대해 올바른 결과를 반환하는지 테스트해야 합니다. 이때 PHPUnit의 데이터 제공자 기능을 사용할 수 있습니다. 데이터 공급자는 테스트할 수 있는 데이터 모음인 매개 변수 집합을 제공하는 메서드입니다.
아래 예에서는 서로 다른 입력 데이터와 예상 출력을 제공하는 Calculator 클래스의 add 메서드에 대한 데이터 공급자를 작성했습니다.
class CalculatorTest extends TestCase { /** * @dataProvider additionProvider */ public function testAdd($a, $b, $expected) { $calculator = new Calculator(); $result = $calculator->add($a, $b); $this->assertEquals($expected, $result); } public function additionProvider() { return [ [0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 2], [2, 3, 5], [-1, 1, 0], [10, -5, 5] ]; } }
이 테스트 사례에서는 @DataProvider 주석을 사용하여 PHPUnit에 데이터 공급자를 찾을 수 있는 위치를 알려줍니다. 우리는 다른 입력 데이터와 예상 출력을 제공하는 추가 제공자라는 데이터 공급자를 작성했습니다. testAdd 테스트 메소드에서는 이 데이터를 직접 전달하여 테스트했습니다.
객체에서 메서드를 테스트할 때 다른 클래스나 외부 리소스에 의존하고 싶지 않을 수도 있습니다. 현재 우리는 PHPUnit의 Mock 객체를 사용하여 이러한 종속성을 시뮬레이션할 수 있습니다. Mock 객체는 동일한 인터페이스를 제공하지만 실제로 인스턴스화되지는 않는 모의 객체입니다.
다음 예제에서는 외부 종속성을 시뮬레이션하기 위해 Calculator 클래스의 add 메서드에 대한 Mock 객체를 작성했습니다.
class CalculatorTest extends TestCase { public function testAdd() { $mock = $this->getMockBuilder('Dependency') ->getMock(); $mock->expects($this->once()) ->method('getValue') ->will($this->returnValue(5)); $calculator = new Calculator($mock); $result = $calculator->add(2, 3); $this->assertEquals(10, $result); } }
이 테스트 사례에서는 getMockBuilder 메서드를 사용하여 종속성이라는 Mock 객체를 생성합니다. 그런 다음 Mock 객체의 getValue 메서드가 한 번 호출되고 5를 반환할 것으로 예상합니다. 마지막으로 이 Mock 객체를 Calculator 클래스의 생성자에 전달합니다.
요약
이 기사에서는 PHP 단위 테스트에 PHPUnit을 사용하는 방법을 배웠습니다. 우리는 PHPUnit을 설치하고, 테스트 케이스를 작성하고, 테스트 케이스를 실행하고, 어설션, 데이터 공급자 및 Mock 객체를 사용했습니다. 이러한 단계를 통해 코드 품질을 향상하고 개발 및 유지 관리 속도를 높이기 위해 코드를 테스트하는 고품질 테스트 사례를 작성할 수 있습니다.
위 내용은 PHP 단위 테스트에 PHPUnit을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!