설치하는 방법
- SimpleTest에서 이클립스 플러그인을 다운로드 받습니다.
- 적당한 장소에 다운로드 받은 소스의 압축을 풉니다.
- 이클립스를 실행시킨 다음에 Help > Software Updates > Find and install을 실행합니다.
- Search for new features to install > New Local Site을 클릭해서 설치할 프로그램의 위치를 설정합니다.
- Finish를 눌러서 설치를 합니다. (설치가 완료된 후에 이클립스가 재시작됩니다.)
- 재시작한 이클립스에서 Window > Preferences를 클릭해서 Preferences 다이얼로그를 띄웁니다.
- SimpleTest항목을 찾은 다음에 PHP.exe file의 위치와 php.ini 파일의 위치, 그리고 Test File Suffix를 설정해줍니다. (Suffix를 설정하면 플러그인이 테스트 파일을 찾는데 도움을 줍니다. - 저의 경우에는 .test.php로 설정하였습니다.)
- OK를 눌러서 창을 닫습니다.
PHP파일을 생성한 후 UnitTestCase를 상속받은 테스트 클래스를 작성해주면 됩니다. 테스트할 메소드는 test로 시작하여야만 됩니다.
<?php작성한 파일을 실행하기는 간단합니다. Run > Open Run Dialog를 띄운 다음에 SimpleTest를 실행시켜주거나 실행할 파일을 설정한 후 실행시켜주면됩니다.
class test1 extends UnitTestCase {
function test_pass(){
$x = 1;
$y = 2;
$total = $x + $y;
// 기대하는 결과값인 3과 메소드의 수행결과인 $total을 비교하여 비교치가
// 다른 경우 세 번째 argument를 test fail과 함께 출력하게 됩니다.
$this->assertEqual(3,$total, "This should pass");
}
}
?>
※ 테스트를 추가하는 방법도 간단합니다. UnitTestCase를 상속받은 클래스에서 test...()를 추가하거나 UnitTestCase를 상속받는 테스트 클래스를 추가한 후 GroupTest를 생성하여 테스트가 가능합니다.
<?php※※ setUp() 메소드와 tearDown() 메소드를 사용하여 테스트 클래스가 로딩하기 전에 실행되는 작업을 수행하고, 테스트 종료한 다음에 마무리 작업을 수행할 수 있습니다. (다른 단위 테스트와 동일합니다.)
class myGroupTest extends GroupTest {
function myGroupTest() {
parent::GroupTest('');
$this->addTestFile(dirname(__FILE__).'/test1.php');
$this->addTestFile(dirname(__FILE__).'/test2.php');
}
}
?>
※※※ Mockup 생성도 가능합니다. Mockup을 생성하는 목적은 내부와 외부를 연결해주는 게이트웨이에 해당하는 부분을 만들 때 사용합니다.
// mock_objects를 포함시킵니다.출처 : SimpleTest via Manning, PHP in Action(Objects, Design, Agility)- 9,10장
require_once('simpletest/mock_objects.php');
// Mockup으로 만들 클래스 파일이 따로 있다면 require_once를 호출하여 포함시킵니다.
// 또는 클래스를 동일 테스트 파일에 선언해줍니다. (인터페이스만 선언해주면 됩니다.)
...
// Mock 클래스를 생성합니다.
Mock::generate('Sample');
// 이렇게 생성된 Mock 클래스는 Mock~으로 시작되는 이름의 클래스로 생성할 수 있습니다.
sample = new MockSample();
// 생성된 클래스의 메소드가 호출될 때의 동작을 정의하기 위해서 expect
// 또는 setReturnReference() 를 사용하여서 어떤 메소드가 호출될 때 어떤
// 리턴결과가 돌아올지에 대해서 정의가 가능합니다.
sample->expect(...);
※ SimpleTest의 API는 여기로 -> http://simpletest.org/api/
댓글 없음:
댓글 쓰기