일단, 기본적으로 정보를 얻을 수 있는 곳은 PHPUnit Support in Eclipse다.

컴퓨터에 PHPUnit가 기본적으로 설치돼 있어야 한다.

이클립스에서 PHPUnit은 플러그인으로 설치하는 게 아니다. 실행환경으로 사용한다.

(이 방법 말고 다른 방법도 있는 것 같긴 하다. 플러그인은 아니지만 GUI를 제공해 주는 것 같다. phpunit4eclipse라는 프로젝트다.)

외부 실행환경 설정을 통해 금방 해결할 수 있다.

메뉴에서… Run > External Tools > External Tools Configuration 을 선택해서 들어간다.

왼쪽 상단의 New launch configuration 을 누른다.

그러면 아래 같은 창이 뜨는데, 적절히 내용을 채운다.

우분투의 경우 위와 똑같이 써 주면 된다. 참 쉽다.(수정사항 있다. Arguments는 ${workspace_loc}${resource_path} 라고 써야 한다.)

Name 은 이름이다. 자유롭게 붙이면 된다. 당연히 PHPUnit 으로 붙이는 게 나을 거다.

Location 은 PHP 실행파일의 위치다. 우분투는 /usr/bin/php5 다.

Working Directory 는 PHPUnit을 어떤 프로젝트에 적용할 거냐는 거다. Variables 에서 workspace_loc 를 선택해 주거나 그냥 ${workspace_loc} 이라고 써 주면 된다.

Arguments 는 PHPUnit을 실행해 주는 명령문인데, PHPUnit의 실행파일명 뒤에 ${workspace_loc}${resource_path}를 붙여서 쓴다.

우분투는 /usr/bin/phpunit ${workspace_loc}${resource} 다.

(이런 변수들에 대한 설명은 여기서 볼 수 있다. ${workspace_loc}${resource}는 선택하고 있는 파일의 절대경로를 리턴한다.)

Run을 눌러 보자. ㅋ 만약 PHPUnit 테스트용 파일이 열려있는 상태라면 콘솔에서 테스트 결과를 볼 수 있을 것이다.

오류

만약 “Variable references empty selection: ${resource_path}” 같은 오류상자가 뜬다면, 왼쪽 프로젝트 익스플로러에서 파일을 선택하지 않았기 때문에. PHPUnit을 실행하기 전에 프로젝트 익스플로러에서 파일을 선택해 주자.

혹은 콘솔에 “Argument #1 of PHPUnit_Util_Fileloader:checkAndLoad() is no existing file” 라는 에러 메시지가 나온다면 경로가 제대로 안 잡힌 거다. ${workspace_loc}${resource_path}에 오타는 없는지 찾아 보라.

주의할 점

아마도 class명과 파일명을 일치시켜야 하는 듯하다. 아닐 수도 있다. 확인해 보고 정확하게 쓰겠다.

그리고 파일을 테스트하려면 Run > External Tools > PHPUnit 을 선택하면 된다. 그러면 콘솔이 뜨고 테스트가 된다.

뭔가 테스트하고 싶은 분들은 아래 코드를 긁어서 ArrayTest.php 를 만들고 직접 테스트해 보기 바란다.

require_once '/usr/share/php/PHPUnit/Framework.php';

class ArrayTest extends PHPUnit_Framework_TestCase
{
    public function testNewArrayIsEmpty()
    {
        // Create the Array fixture.
        $fixture = array();

        // Assert that the size of the Array fixture is 0.
        $this->assertEquals(0, sizeof($fixture));
    }

    public function testArrayContainsAnElement()
    {
        // Create the Array fixture.
        $fixture = array();

        // Add an element to the Array fixture.
        $fixture[] = 'Element';

        // Assert that the size of the Array fixture is 1.
        $this->assertEquals(1, sizeof($fixture));
    }
}

참고로 맨 위의 require_once 에는 실제 경로를 넣어 줘야 한다. 위 경로는 우분투를 기준으로 한 경로다.