phpunit 설치 및 php 단위 테스트 하기
PHPUnit 은 JUnit 처럼 단위 테스트를 할수 있는 PHP 용 Unit test 프레임워크이다.
Laravel framework는 PHPUnit 으로 단위 테스트를 할 수 있게 구현되어 있으므로 Windows와 Linux 에 PHPUnit 을 설치하는 방법에 대해서 정리해 본다.
사전 요구 사항
- PHP 가 먼저 설치되어 있어야 하며 PHP 설치는 RHEL/CentOS 와 Amazon Linux 에 php 7 설치 를 참고하자.
- 커맨드 라인용 PHP 실행 명령어 (Windows : php.exe, Linux : php) 가 PATH 에 걸려 있는게 좋다.
PHPUnit 을 다운받는다.
6.0 부터는 PHP 7만 지원하며 namespace 가 적용되어 기존에 작성한 단위 테스트를 수정해야 하므로 신규 프로젝트는 6 이상을 사용하고 기존 프로젝트일 경우 5.7 버전을 사용하는 게 좋다.
phpunit 9.5.xcurl -L -o phpunit-9.phar https://phar.phpunit.de/phpunit-9.phar
설치
Windows
- 다운받은 phpunit-9.phar 을 PATH 가 걸린 폴더에 옮겨 놓는다. (Ex: c:\dev-util)
phpunit-9.phar 가 있는 있는 경로에 phpunit.bat 배치 파일을 생성한다.
phpunit.bat@ECHO OFF php "%~dp0phpunit-9.phar" %*
Linux
다운받은 phpunit-9.phar 을 PATH 가 걸린 폴더에 옮겨 놓는다. (Ex: /usr/local/bin)
sudo mv phpunit-9.phar /usr/local/bin
- 실행 속성을 부여한다.
sudo chmod +x /usr/local/bin/phpunit*.phar
- symbolic link 를 생성한다.
sudo ln -sf /usr/local/bin/phpunit-9.phar /usr/local/bin/phpunit
확인
phpunit 명령어가 동작하는지 확인해 본다.
phpunit --version PHPUnit 9.5.7 by Sebastian Bergmann.
Test
Code
src/Money.php
<?php class Money { private $amount; public function __construct($amount) { $this->amount = $amount; } public function getAmount() { return $this->amount; } public function negate() { return new Money(-1 * $this->amount); } // ... }
Test
tests/MoneyTest.php
<?php class MoneyTest extends PHPUnit_Framework_TestCase { // ... public function testCanBeNegated() { // Arrange $a = new Money(1); // Act $b = $a->negate(); // Assert $this->assertEquals(-1, $b->getAmount()); } // ... }
실행
phpunit --bootstrap src/autoload.php tests/MoneyTest