PHPUnitManual:9.1

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
9.1 불완전한 테스트

새로운 테스트 케이스 클래스를 작성할 때는, 지금부터 쓸 테스트의 내용을 명확하게 하기 위해서 우선 다음과 같은 빈 테스트 메소드를 작성하는 경향이 있습니다.

public function testSomething()
{
}


그렇지만, PHPUnit framework 에서는 빈 메소드를 "테스트에 성공했다" 고 판단하는 문제가 있습니다. 이런 잘못된 해석으로 인해, 테스트 결과 레포트가 의미 없게 됩니다. 이 테스트가 정말로 성공한 것인지 아니면 아직 테스트가 구현되지 않은 것인지를 구별할 수 없기 때문입니다. 구현하지 않은 테스트 메소드 안에서 $this->fail() 를 호출한다고 해도 달라지는 것은 없습니다. 이 경우, "테스트에 실패했다" 고 판단됩니다. 이는 구현되지 않은 테스트가 "성공" 한 것으로 판단되는 것과 마찬가지로 옳지 않습니다. (역주 : 레포트를 보고 그 테스트가 정말로 실패한 것인지, 아니면 아직 구현되지 않은 것인지 구별할 수 없습니다)


테스트의 성공을 파란불, 실패를 빨간불이라고 생각할 때, 테스트가 구현되지 않은 상태를 나타낼 노란불이 필요합니다. 이런 경우에 사용할 수 있는 인터페이스가 PHPUnit_Framework_IncompleteTest 입니다. 이 인터페이스는 테스트가 완성되지 않았거나 구현되지 않았을 때 발생하는 예외를 나타냅니다. 이 인터페이스의 표준 구현이 PHPUnit_Framework_IncompleteTestError 입니다.


예9.1 "테스트에 미완성 표식을 추가" 에서는 테스트 케이스 클래스 SampleTest 를 정의합니다. 테스트 메소드 안에서 편리한 메소드 markTestIncomplete() (이 메소드는 자동적으로 PHPUnit_Framework_IncompleteTestError 예외를 발생시킵니다) 를 호출하여 이 메소드가 아직 완성되지 않았음을 선언합니다.


예9.1: 테스트에 미완성 표식을 추가

<?php
class SampleTest extends PHPUnit_Framework_TestCase
{
    public function testSomething()
    {
        // Optional: 필요한 경우, 여기에 테스트를 추가하세요
        $this->assertTrue(TRUE, 'This should already work.');
 
        // 테스트 처리를 중단하고, 테스트가 미완성임을 표시
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }
}
?>


PHPUnit command-line test runner 에서는 미완성 테스트를 I(영문대문자 i) 로 표현합니다.

phpunit --verbose SampleTest
PHPUnit 3.7.0 by Sebastian Bergmann.

I

Time: 0 seconds, Memory: 3.75Mb

There was 1 incomplete test:

1) SampleTest::testSomething
This test has not been implemented yet.

/home/sb/SampleTest.php:12
OK, but incomplete or skipped tests!
Tests: 1, Assertions: 1, Incomplete: 1.


표9.1 "미완성 테스트용 API" 는 테스트를 미완성으로 취급하기 위한 API 입니다.


Notes