phpStorm 에서 phpUnit테스트설정

Jakezo·2022년 2월 28일
0

1. PHP Unit

PHP Unit은 PHP 코드 테스트 도구이며, 사실상 표준으로 자리잡게 되었습니다.

PHP Unit을 설치하는 방법으로는 아카이브( phar 파일 )을 다운로드하여 직접 실행하는 방법이 있고,

PHP 패키지 및 의존성 관리 도구인 컴포저( Composer )를 사용하는 방법이 있습니다.

이 글에서는 php storm을 사용했을때 리눅스를 사용하지 않고 간단하게 php Unit 테스트 설정하는 방법에 대해서 소개하려고 합니다.

( 이곳 Composer로 PHP Unit을 사용하는 방법에 대해서도 소개하고 있습니다. )

2. PHP Unit 설치

먼저 링크에서 PHP Unit 패키지를 설치하도록 합니다. (무조건 본인이 설치한 php 에대한 버전에 맞게 설치 해야합니다.)

설치된 phar 파일을 단위 테스트를 진행할 폴더 안으로 이동시킵니다.


1. PHP Unit 설정

Ctrl + Alt + S 또는 File → Settings 에 들어온 후 아까 설치한 phar 에대한 설정을 합니다.

❗라는 이모티콘 이후 PHPUnit 에 대한 버전이 나오면 성공

4. 테스트 코드 작성

다음으로 테스트코드를 간단하게 작성해봄으로써 단위 테스트를 진행해보겠습니다.

먼저 calc.php라는 이름으로 파일을 생성하여 함수를 작성합니다.

이 함수는 인자로 받은 값들의 평균을 계산하는 함수입니다.

src/calc.php

<?php
function avg()
{
    $args = func_get_args();
    $sum = 0;
    foreach ($args as $val) {
        $sum += $val;
    }
    $avg = $sum / count($args);
    return $avg;
}

그리고 이 함수가 제대로 실행되는지 확인하기 위해 CalcTest.php 파일을 생성합니다.

이 파일은 클래스로 작성이 되며, PHP Unit을 실행하기 위해 몇가지 규칙이 존재합니다.

tests/CalcTest.php

<?php
include '../src/calc.php';
use PHPUnit\Framework\TestCase;

class CalcTest extends TestCase
{
    public function testAvg()
    {
        $result = avg(10, 20, 30);
        $this->assertEquals(20, $result);
    }

}
  • TestCase 클래스 상속
    • 테스트 코드를 작성하는 파일은 클래스로 작성이 되어야 하며, PHPUnit\Framework\TestCase 클래스를 상속받아야 합니다.
  • 메서드명 규칙
    • 테스트를 수행하는 함수 명은 "test"로 시작해야 합니다.

이와 같은 규칙만 지키면 단위 테스트를 진행할 수 있습니다.

assertEquals() 메서드는 TestCase 클래스에 정의되어 있는 것이며

  • 첫 번째 인자에는 예상하는 기대값을 전달하고,
  • 두 번째 인자에는 테스트 할 함수의 결과 값을 전달하면 됩니다.

테스트 코드까지 작성을 했으니, 이제 단위 테스트를 실행해보겠습니다.

마지막에 표시된 OK는 모든 테스트가 성공했음을 뜻합니다.

테스트 코드로 작성된 10, 20, 30의 평균은 20이므로 기대 값과 일치하기 때문에 당연한 결과입니다.

그러면 기대 값이 20이 아닌 100으로 설정했으면 결과는 어떻게 될까요?

$this->assertEquals(100, $result);


이번에는 결과가 "FAILURES !" 입니다.

실제 결과 값과 예상한 값이 다르기 때문에 테스트에 실패했다고 한 것입니다.

이와 같이 테스트 코드를 작성해서 단위 테스트를 진행할 수 있습니다.

위에서 테스트 코드로 결과 값과 기대 값이 일치하는지 확인하는 assertEquals() 메서드를 살펴보았습니다.

PHP Unit에는 이 밖에도 배열에 특정 원소가 배열에 존재하는지, 배열이 비어 있는지, 객체가 어떤 클래스의 인스턴스인지 등에 대한 메서드가 정의되어 있습니다.

PHP Unit의 다른 메서드는 여기를 참고해주세요!

이상으로 PHP Unit을 설치하고 테스트 코드를 작성하여 단위 테스트를 하는 방법에 대해 알아보았습니다.

profile
탐험가

1개의 댓글

comment-user-thumbnail
2023년 12월 7일

안녕하세요. 유익한 포스팅 정말 잘 보고 있습니다. 만약에 1번에서 php.unit 설정할때 버전에 맞게 phpunit파일을 폴더에 넣고 골랐음에도 PHPUnit version:Not installed 라는 말이 뜨면 어떻게 해야하나요

답글 달기