<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=PHPUnitManual%3AB</id>
	<title>PHPUnitManual:B - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=PHPUnitManual%3AB"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:B&amp;action=history"/>
	<updated>2026-05-01T18:36:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:B&amp;diff=3457&amp;oldid=prev</id>
		<title>Onionmixer: PHPUnit Appendix B. 선언 Annotations 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:B&amp;diff=3457&amp;oldid=prev"/>
		<updated>2013-07-04T10:11:02Z</updated>

		<summary type="html">&lt;p&gt;PHPUnit Appendix B. 선언 Annotations 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;Appendix B. 선언 Annotations&lt;br /&gt;
&lt;br /&gt;
==선언 Annotations==&lt;br /&gt;
&lt;br /&gt;
선언은 메타 데이터를 나타내는 특별한 구문으로, 프로그래밍 언어의 소스 코드에 추가할 수 있습니다. PHP 자체에는 선언에 관한 전용 문법은 존재하지 않지만, 주석 블럭에 &amp;quot;@선언 인수&amp;quot; 와 같은 태그를 작성하여 선언을 표현하는 표기법이 PHP 커뮤니티에서는 일반적입니다. PHP 에서는 Reflection API 의 getDocComment() 메서드를 사용하여, 함수, 클래스, 메서드, 속성 각각의 주석 블럭에 접근할 수 있습니다. PHPUnit 등의 어플리케이션에서는 이 정보를 토대로 실행 시의 동작을 결정합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 장에서는 PHPUnit 이 서포트하는 모든 선언에 대해 해설합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@author===&lt;br /&gt;
&lt;br /&gt;
@author 선언은 @group 선언의 alias 로, 테스트 작성자 별로 필터링할 수 있게 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@backupGlobals===&lt;br /&gt;
&lt;br /&gt;
Test case 클래스의 모든 테스트에 대해서, 글로벌 변수의 백업과 복구 기능을 무효화할 수 있습니다. 사용법은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @backupGlobals disabled&lt;br /&gt;
 */&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@backupGlobals 선언은 테스트 메서드 레벨에서 사용할 수도 있습니다. 이를 통해 백업과 복구 작업을 보다 정밀하게 제어할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @backupGlobals disabled&lt;br /&gt;
 */&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @backupGlobals enabled&lt;br /&gt;
     */&lt;br /&gt;
    public function testThatInteractsWithGlobalVariables()&lt;br /&gt;
    {&lt;br /&gt;
        // ...&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@backupStaticAttributes===&lt;br /&gt;
&lt;br /&gt;
Test case 클래스의 모든 테스트에 대해서, 클래스의 정적 속성의 백업과 복구를 무효화 할 수 있습니다. 사용법은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @backupStaticAttributes disabled&lt;br /&gt;
 */&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The @backupStaticAttributes 선언은 테스트 메서드 레벨에서 사용할 수도 있습니다. 이를 통해 백업과 복구 작업을 보다 정밀하게 제어할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @backupStaticAttributes disabled&lt;br /&gt;
 */&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @backupStaticAttributes enabled&lt;br /&gt;
     */&lt;br /&gt;
    public function testThatInteractsWithStaticAttributes()&lt;br /&gt;
    {&lt;br /&gt;
        // ...&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@codeCoverageIgnore*===&lt;br /&gt;
&lt;br /&gt;
@codeCoverageIgnore, @codeCoverageIgnoreStart 그리고 @codeCoverageIgnoreEnd 선언을 사용하여, 코드의 특정 행을 coverage 분석 대상에서 제외할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
사용법은 &amp;quot;Code Blocks의 무시&amp;quot; 를 참조하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@covers===&lt;br /&gt;
&lt;br /&gt;
@covers 선언을 테스트 코드에서 사용하여, 해당 테스트 메서드가 어떤 메서드를 테스트하는지를 지정할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @covers BankAccount::getBalance&lt;br /&gt;
 */&lt;br /&gt;
public function testBalanceIsInitiallyZero()&lt;br /&gt;
{&lt;br /&gt;
    $this-&amp;gt;assertEquals(0, $this-&amp;gt;ba-&amp;gt;getBalance());&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@covers 이 지정된 경우, 지정된 메서드에 대해서만 coverage 정보가 얻어집니다.&lt;br /&gt;
&lt;br /&gt;
표B.1 &amp;quot;테스트가 Cover 하는 메서드를 지정하기 위한 선언&amp;quot; 은 @covers 선언의 구문의 리스트입니다.&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;collapsible collapsed&amp;quot; width=100% style = &amp;quot;border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -khtml-border-radius: 10px; -icab-border-radius: 10px; -o-border-radius: 10px; border: 5px groove #000066;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;color: white; background-color: black;&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Annotation&amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039;설명&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName::methodName||해당 테스트 메서드가 지정한 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName||해당 테스트 메서드가 지정한 클래스의 모든 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName&amp;lt;extended&amp;gt;||해당 테스트 메서드가 지정한 클래스와 그 부모 클래스 및 인터페이스의 모든 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName::&amp;lt;public&amp;gt;||해당 테스트 메서드가 지정한 클래스의 모든 public 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName::&amp;lt;protected&amp;gt;||해당 테스트 메서드가 지정한 클래스의 모든 protected 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName::&amp;lt;private&amp;gt;||해당 테스트 메서드가 지정한 클래스의 모든 private 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName::&amp;lt;!public&amp;gt;||해당 테스트 메서드가 지정한 클래스의 public 이 아닌 모든 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName::&amp;lt;!protected&amp;gt;||해당 테스트 메서드가 지정한 클래스의 protected 이 아닌 모든 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ClassName::&amp;lt;!private&amp;gt;||해당 테스트 메서드가 지정한 클래스의 private 이 아닌 모든 메서드를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@covers ::functionName||해당 테스트 메서드가 지정한 글로벌 함수를 cover 함을 나타냅니다.&lt;br /&gt;
|- style=&amp;quot;color: black; background-color: gray;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |표 B.1. 테스트가 Cover 하는 메서드를 지정하기 위한 선언&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@coversNothing===&lt;br /&gt;
&lt;br /&gt;
@coversNothing 선언을 테스트 코드에서 사용하여, 해당 test case 에 대해서 code coverage 정보를 기록하지 않도록 설정합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 기능은 통합 테스트 (integration testing) 를 위해 사용할 수 있습니다. 예14.3 &amp;quot;어떤 메서드도 cover 하지 않도록 지정한 테스트&amp;quot; 를 참조하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이 메서드는 클래스 레벨이나 메서드 레벨에서 사용할 수 있고, 모든 @covers 태그를 무시합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@dataProvider===&lt;br /&gt;
&lt;br /&gt;
테스트 메서드에 임의의 인수를 넘길 수 있습니다. 인수는, 데이터 프로바이더 메서드 ( 예4.4 &amp;quot;배열의 배열을 넘기는 데이터 프로바이더의 사용&amp;quot; 의 provider()) 이 넘깁니다. 사용하는 데이터 프로바이더 메서드를 지정하기 위해서는, @dataProvider 선언을 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Data Providers&amp;quot; 를 참조하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@depends===&lt;br /&gt;
&lt;br /&gt;
PHPUnit 에서는 테스트 메서드 간의 의존성을 명시적으로 선언할 수 있습니다.여기서 말하는 의존성이란, 테스트 메서드가 실행되는 순서를 정의하는 것이 아닙니다. 생산자가 테스트 fixture 를 생성하여, fixture 의 인스턴스를 반환하고, 의존하는 소비자가 인스턴스를 받아 이용하는 것을 말합니다. 예4.2 &amp;quot;@depends 선언을 사용한 의존성 표현&amp;quot; 은 @depends 선언을 사용하여 테스트 메서드의 의존성을 표현하는 예입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;테스트 의존성 (Test Dependencies)&amp;quot; 을 참고하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@expectedException===&lt;br /&gt;
&lt;br /&gt;
예4.7 &amp;quot;@expectedException 선언의 사용법&amp;quot; 은 테스트하는 코드 내부에서 예외가 throw 되었는지 여부를 @expectedException 선언을 사용하여 조사하는 방법입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;예외의 테스트 (Testing Exceptions)&amp;quot; 를 참고하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@expectedExceptionCode===&lt;br /&gt;
&lt;br /&gt;
@expectedExceptionCode 선언을 @expectedException 과 조합하여 사용하면, throw 된 예외의 에러 코드에 대한 검증이 가능해집니다. 이를 통해 예외를 보다 좁은 범위로 좁힐 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @expectedException     MyException&lt;br /&gt;
     * @expectedExceptionCode 20&lt;br /&gt;
     */&lt;br /&gt;
    public function testExceptionHasErrorcode20()&lt;br /&gt;
    {&lt;br /&gt;
        throw new MyException(&amp;#039;Some Message&amp;#039;, 20);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
테스트의 실행을 쉽게 하고 중복을 줄이기 위해, 바로가기를 사용하여 클래스 정수를 지정할 수 있습니다. @expectedExceptionCode 에서 &amp;quot;@expectedExceptionCode ClassName::CONST&amp;quot; 구문을 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
      * @expectedException     MyException&lt;br /&gt;
      * @expectedExceptionCode MyClass::ERRORCODE&lt;br /&gt;
      */&lt;br /&gt;
    public function testExceptionHasErrorcode20()&lt;br /&gt;
    {&lt;br /&gt;
      throw new MyException(&amp;#039;Some Message&amp;#039;, 20);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
    const ERRORCODE = 20;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@expectedExceptionMessage===&lt;br /&gt;
&lt;br /&gt;
@expectedExceptionMessage 선언은 @expectedExceptionCode 와 비슷하게 예외의 에러 메세지에 관해 검증합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @expectedException        MyException&lt;br /&gt;
     * @expectedExceptionMessage Some Message&lt;br /&gt;
     */&lt;br /&gt;
    public function testExceptionHasRightMessage()&lt;br /&gt;
    {&lt;br /&gt;
        throw new MyException(&amp;#039;Some Message&amp;#039;, 20);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
기대되는 메세지를 예외 메세지의 일부로 삼을 수도 있습니다. 이 기능은 특정 이름이나 인수가 예외에 표시되는지를 확인하고자 하면서도 예외 메세지 전체가 고정되지는 않은 경우에 편리합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
     /**&lt;br /&gt;
      * @expectedException        MyException&lt;br /&gt;
      * @expectedExceptionMessage broken&lt;br /&gt;
      */&lt;br /&gt;
     public function testExceptionHasRightMessage()&lt;br /&gt;
     {&lt;br /&gt;
         $param = &amp;quot;broken&amp;quot;;&lt;br /&gt;
         throw new MyException(&amp;#039;Invalid parameter &amp;quot;&amp;#039;.$param.&amp;#039;&amp;quot;.&amp;#039;, 20);&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
테스트의 실행을 쉽게 하고 중복을 줄이기 위해, 바로가기를 사용하여 클래스 정수를 지정할 수 있습니다. @expectedExceptionMessage 에서 &amp;quot;@expectedExceptionMessage ClassName::CONST&amp;quot; 구문을 사용합니다. 샘플 코드는 the section called “@expectedExceptionCode” 를 참고하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@group===&lt;br /&gt;
&lt;br /&gt;
한 테스트를 하나 혹은 복수의 group 에 포함시킬 수 있습니다. @group 선언은 다음과 같이 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @group specification&lt;br /&gt;
     */&lt;br /&gt;
    public function testSomething()&lt;br /&gt;
    {&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * @group regresssion&lt;br /&gt;
     * @group bug2204&lt;br /&gt;
     */&lt;br /&gt;
    public function testSomethingElse()&lt;br /&gt;
    {&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
특정 group 에 포함된 테스트만을 골라서 실행하려는 경우, command-line test runner 에서는 --group 이나 --exclude-group 스위치를 사용합니다. XML 설정 파일에서는, 각각 대응 디렉토리를 설정합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@outputBuffering===&lt;br /&gt;
&lt;br /&gt;
@outputBuffering 선언을 사용하여 PHP 의 output buffering 을 다음과 같이 제어할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @outputBuffering enabled&lt;br /&gt;
 */&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@outputBuffering 선언은 테스트 메서드 레벨에서 사용할 수도 있습니다. 이 기능을 통해 output buffering 을 보다 정밀하게 제어할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @outputBuffering disabled&lt;br /&gt;
 */&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @outputBuffering enabled&lt;br /&gt;
     */&lt;br /&gt;
    public function testThatPrintsSomething()&lt;br /&gt;
    {&lt;br /&gt;
        // ...&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@preserveGlobalState===&lt;br /&gt;
&lt;br /&gt;
테스트를 별도 프로세스에서 실행할 때, PHPUnit 은 부모 프로세스의 글로벌 상태 (state) 를 보존하려 합니다. 부모 프로세스의 모든 글로벌 상태를 serialize 하여, 자식 프로세스에서 unserialize 합니다. 부모 프로세스에 serialize 불가능한 상태가 있을 경우 문제가 발생합니다. 이 문제에 대응하기 위해, 글로벌 상태의 보존을 무효화할 수 있습니다. 이를 위해 @preserveGlobalState 선언을 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @runInSeparateProcess&lt;br /&gt;
     * @preserveGlobalState disabled&lt;br /&gt;
     */&lt;br /&gt;
    public function testInSeparateProcess()&lt;br /&gt;
    {&lt;br /&gt;
        // ...&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@requires===&lt;br /&gt;
&lt;br /&gt;
@requires 선언을 사용하여 공통된 사전 조건 (예:PHP버젼이나 확장 모듈의 인스톨 상황) 을 만족시키지 않는 경우, 테스트를 패스합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
조건으로 지정할 수 있는 내용과 예는 표9.3 &amp;quot;@requires 의 사용예&amp;quot; 를 참고하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@runTestsInSeparateProcesses===&lt;br /&gt;
&lt;br /&gt;
테스트 클래스의 모든 test case 를, 개별 PHP 프로세스로 실행하도록 지시합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @runTestsInSeparateProcesses&lt;br /&gt;
 */&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    // ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;#039;&amp;#039;&amp;#039;주의사항&amp;#039;&amp;#039;&amp;#039;: 기본 설정으로, PHPUnit 은 부모 프로세스의 글로벌 상태를 보존하려 합니다. 부모 프로세스의 모든 글로벌 상태를 serialize 하여, 자식 프로세스에서 unserialize 합니다. 부모 프로세스에 serialize 불가능한 상태가 있을 경우 문제가 발생합니다. 이 문제에 대응하기 위해, 글로벌 상태의 보존을 무효화할 수 있습니다. “@preserveGlobalState” 를 참조하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@runInSeparateProcess===&lt;br /&gt;
&lt;br /&gt;
해당 테스트를 개별 PHP 프로세스로 실행하도록 지시합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class MyTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @runInSeparateProcess&lt;br /&gt;
     */&lt;br /&gt;
    public function testInSeparateProcess()&lt;br /&gt;
    {&lt;br /&gt;
        // ...&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;주의사항&amp;#039;&amp;#039;&amp;#039;: 기본 설정으로, PHPUnit 은 부모 프로세스의 글로벌 상태를 보존하려 합니다. 부모 프로세스의 모든 글로벌 상태를 serialize 하여, 자식 프로세스에서 unserialize 합니다. 부모 프로세스에 serialize 불가능한 상태가 있을 경우 문제가 발생합니다. 이 문제에 대응하기 위해, 글로벌 상태의 보존을 무효화할 수 있습니다. “@preserveGlobalState” 를 참조하세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@test===&lt;br /&gt;
&lt;br /&gt;
테스트 메서드의 이름 앞에 test 를 추가하는 대신에, 메서드의 주석 블록에서 @test 선언을 사용하여 해당 메서드가 테스트 메서드임을 지정할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @test&lt;br /&gt;
 */&lt;br /&gt;
public function initialBalanceShouldBe0()&lt;br /&gt;
{&lt;br /&gt;
    $this-&amp;gt;assertEquals(0, $this-&amp;gt;ba-&amp;gt;getBalance());&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@testdox===&lt;br /&gt;
&lt;br /&gt;
내용없음&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===@ticket===&lt;br /&gt;
&lt;br /&gt;
내용없음&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:PHPUnitManual]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>