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 5.7wget --no-check-certificate https://phar.phpunit.de/phpunit-5.7.27.phar chmod +x phpunit-5.7.27.phar sudo mv phpunit-5.7.27.phar /usr/local/bin/ sudo ln -s /usr/local/bin/phpunit-5.7.27.phar /usr/local/bin/phpunit sudo ln -s /usr/local/bin/phpunit-5.7.27.phar /usr/local/bin/phpunit5
phpunit 6.xwget --no-check-certificate https://phar.phpunit.de/phpunit-6.5.8.phar chmod +x phpunit-6.5.8.phar sudo mv phpunit-6.5.8.phar /usr/local/bin/ sudo ln -s /usr/local/bin/phpunit-6.5.8.phar /usr/local/bin/phpunit6
최신 버전 다운로드wget https://phar.phpunit.de/phpunit.phar && chmod +x phpunit.phar sudo mv phpunit.phar /usr/local/bin/
설치
Windows
- 다운받은 phpunit.phar 을 PATH 가 걸린 폴더에 옮겨 놓는다. (Ex: c:\dev-util)
phpunit.phar 이 있는 경로에 phpunit.bat 배치 파일을 생성한다.
phpunit.bat@ECHO OFF php "%~dp0phpunit.phar" %*
Linux
다운받은 phpunit.phar 을 PATH 가 걸린 폴더에 옮겨 놓는다. (Ex: /usr/local/bin)
- 실행 속성을 부여한다.
chmod +x /usr/local/bin/phpunit.phar
- symbolic link 를 생성한다.
ln -s /usr/local/bin/phpunit.phar /usr/local/bin/phpunit
확인
phpunit 명령어가 동작하는지 확인해 본다.
phpunit --version PHPUnit 4.4.5 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