phpunit 설치 및 php 단위 테스트 하기

PHPUnit 은 JUnit 처럼 단위 테스트를 할수 있는 PHP 용 Unit test 프레임워크이다.


Laravel framework는 PHPUnit 으로 단위 테스트를 할 수 있게 구현되어 있으므로 Windows와 Linux 에 PHPUnit 을 설치하는 방법에 대해서 정리해 본다.


사전 요구 사항

  1. PHP 가 먼저 설치되어 있어야 하며 PHP 설치는 RHEL/CentOS 와 Amazon Linux 에 php 7 설치 를 참고하자.
  2. 커맨드 라인용 PHP 실행 명령어 (Windows : php.exe, Linux : php) 가 PATH 에 걸려 있는게 좋다.
  3. PHPUnit 을 다운받는다. 

    6.0 부터는 PHP 7만 지원하며 namespace 가 적용되어 기존에 작성한 단위 테스트를 수정해야 하므로 신규 프로젝트는 6 이상을 사용하고 기존 프로젝트일 경우 5.7 버전을 사용하는 게 좋다.

    phpunit 9.5.x
    curl -L -o phpunit-9.phar https://phar.phpunit.de/phpunit-9.phar

설치

Windows

  1. 다운받은 phpunit-9.phar 을 PATH 가 걸린 폴더에 옮겨 놓는다. (Ex: c:\dev-util)
  2. phpunit-9.phar 가 있는 있는 경로에 phpunit.bat 배치 파일을 생성한다.

    phpunit.bat
    @ECHO OFF
    php "%~dp0phpunit-9.phar" %*

Linux

  1. 다운받은 phpunit-9.phar  을 PATH 가 걸린 폴더에 옮겨 놓는다. (Ex: /usr/local/bin)

    sudo mv phpunit-9.phar /usr/local/bin


  2. 실행 속성을 부여한다.
    sudo chmod +x /usr/local/bin/phpunit*.phar
  3. 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


같이 보기