<?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%3A6.4</id>
	<title>PHPUnitManual:6.4 - 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%3A6.4"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:6.4&amp;action=history"/>
	<updated>2026-05-02T15:36:48Z</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:6.4&amp;diff=3391&amp;oldid=prev</id>
		<title>Onionmixer: PHPUnit 6.4 Global State 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:6.4&amp;diff=3391&amp;oldid=prev"/>
		<updated>2013-07-02T07:57:59Z</updated>

		<summary type="html">&lt;p&gt;PHPUnit 6.4 Global State 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;6.4 Global State&lt;br /&gt;
&lt;br /&gt;
singleton 을 사용하는 코드를 테스트하는 것은 매우 어렵습니다 [http://googletesting.blogspot.com/2008/05/tott-using-dependancy-injection-to.html]. 마찬가지로, 글로벌 변수를 사용하는 코드를 테스트하는 것 또한 어렵습니다. 일반적으로 테스트 대상 코드가 글로벌 변수와 강하게 묶여 있는 경우, 글로벌 변수의 값을 제어할 수 없습니다. 또 다른 문제는, 한 테스트에서 글로벌 변수를 변경한 결과로 인해 다른 테스트에서 문제를 일으킬 수도 있다는 것입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PHP 에서 글로벌 변수는 다음과 같이 작용합니다.&lt;br /&gt;
&lt;br /&gt;
* 글로벌 변수 $foo = &amp;#039;bar&amp;#039;; 는 $GLOBALS[&amp;#039;foo&amp;#039;] = &amp;#039;bar&amp;#039;; 로 저장됩니다.&lt;br /&gt;
* $GLOBALS 은 슈퍼 글로벌 변수입니다.&lt;br /&gt;
* 슈퍼 글로벌 변수는 모든 영역 (scope) 에서 사용 가능한 built-in 변수입니다.&lt;br /&gt;
* 함수나 메소드의 내부에서 글로벌 변수 $foo 에 접근하기 위해서는, 직접 $GLOBALS[&amp;#039;foo&amp;#039;] 에 접근하거나, global $foo; 를 사용하여 글로벌 변수를 참조하는 로컬 변수를 만들어야 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
글로벌 변수 이외에도, 클래스의 정적 속성도 global state 를 가집니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
기본 상태 (defalut )에서, PHPUnit 이 테스트를 실행할 때는 글로벌 변수나 슈퍼 글로벌 변수 ($GLOBALS&amp;lt;, $_ENV, $_POST, $_GET, $_COOKIE, $_SERVER, $_FILES, $_REQUEST) 는 다른 테스트에 영향을 미치지 않습니다. 옵션을 통해 클래스의 정적 속성도 테스트에 영향을 미치지 않게 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;주의사항&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:클래스의 정적 속성의 백업/복원 을 구현하기 위해서는 PHP 5.3 이상이 필요합니다.&lt;br /&gt;
:글로벌 변수나 클래스의 정적 속성의 백업/복원 을 구현하기 위해서 serialize() 와 unserialize() 를 사용합니다.&lt;br /&gt;
:PHP 에서 기본으로 제공하는 클래스의 오브젝트 중에는 serialize 할 수 없는 경우도 있습니다 (예: PDO 오브젝트). 이런 오브젝트가 $GLOBALS 배열에 포함되어 있는 경우, 백업은 실패할 것입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;@backupGlobals&amp;quot; 에서 설명하는 @backupGlobals 선언을 사용할 경우, 글로벌 변수의 백업/복원 을 제어할 수 있습니다. 다른 방법으로는, 블랙리스트를 만들어 백업/복원 대상에서 제외시킬 수도 있습니다.&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;
    protected $backupGlobalsBlacklist = array(&amp;#039;globalVariable&amp;#039;);&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;&lt;br /&gt;
:$backupGlobalsBlacklist 속성을 setUp() 메소드 등에서 설정해도 효과가 없습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@backupStaticAttributes 에서 설명하는 $backupGlobalsBlacklist 선언을 사용하여, 정적 속성의 백업/복원 을 제어할 수 있습니다. 또, 정적 속성의 블랙리스트를 통해 백업/복원 대상에서 제외시킬 수 있습니다. 블랙리스트의 지정 방법은 다음과 같습니다.&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;
    protected $backupStaticAttributesBlacklist = array(&lt;br /&gt;
      &amp;#039;className&amp;#039; =&amp;gt; array(&amp;#039;attributeName&amp;#039;)&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;&lt;br /&gt;
:&amp;quot;$backupStaticAttributesBlacklist 속성을 setUp() 메소드 등에서 설정해도 효과가 없습니다.&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>