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

Contents


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


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


사전 요구 사항

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

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

    phpunit 5.7
    wget --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.x
    wget --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

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

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

Linux

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

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

    // ...
}



  • No labels

This page has no comments.