Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12

이클립스에서 PHPUnit(PHP 단위 테스트) 사용하기

일단, 기본적으로 정보를 얻을 수 있는 곳은 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 에는 실제 경로를 넣어 줘야 한다. 위 경로는 우분투를 기준으로 한 경로다.

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

댓글 (2개)

  1. Gloridea 댓글:

    좀 더 비주얼한 걸 원하신다면 http://www.phpsrc.org/projects/pti-phpunit/wiki/Features 이걸 추천 드립니다. : )

    1. 녹풍 댓글:

      와우~! 재밌는 놈인데요? 나중에 한 번 차분히 봐야겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다