<?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%3A4.2</id>
	<title>PHPUnitManual:4.2 - 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%3A4.2"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:4.2&amp;action=history"/>
	<updated>2026-05-02T12:38:57Z</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:4.2&amp;diff=3373&amp;oldid=prev</id>
		<title>Onionmixer: PHPUnit 4.1 데이터 제공자 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:4.2&amp;diff=3373&amp;oldid=prev"/>
		<updated>2013-06-06T10:06:15Z</updated>

		<summary type="html">&lt;p&gt;PHPUnit 4.1 데이터 제공자 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;4.2 데이터 제공자&lt;br /&gt;
&lt;br /&gt;
==데이터 제공자 (Providers)==&lt;br /&gt;
&lt;br /&gt;
테스트 메소드에는 임이의 인수를 전달할 수 있습니다. 인수는 데이터 제공자 메소드 (예제 4.4 &amp;quot;배열의 배열을 반환하는 데이터 제공자의 사용&amp;quot; 의 provider() ) 에서 지정합니다. 사용하는 데이터 제공자 메소드를 지정하기 위해서는 @dataProvider 주석을 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
데이터 제공자 메소드는, public 이어야만 합니다. 또, 메소드의 반환값의 type 은, 배열의 배열, 혹은 Object (Iterator 인터페이스가 구현되어 있고, 반복처리 시에 배열을 반환할 것) 일 필요가 있습니다. 이 반환값의 각 요소의 값를 인수로 하여 테스트 메소드가 호출됩니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예제 4.4 배열의 배열을 반환하는 데이터 제공자의 사용&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class DataTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * @dataProvider provider&lt;br /&gt;
	 */&lt;br /&gt;
	public function testAdd($a, $b, $c)&lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;assertEquals($c, $a + $b);&lt;br /&gt;
	}&lt;br /&gt;
	public function provider()&lt;br /&gt;
	{&lt;br /&gt;
		return array(&lt;br /&gt;
				array(0, 0, 0),&lt;br /&gt;
				array(0, 1, 1),&lt;br /&gt;
				array(1, 0, 1),&lt;br /&gt;
				array(1, 1, 3)&lt;br /&gt;
			    );&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PHPUnit 3.7.0 by Sebastian Bergmann.&lt;br /&gt;
...F&lt;br /&gt;
Time: 0 seconds, Memory: 5.75Mb&lt;br /&gt;
There was 1 failure:&lt;br /&gt;
1) DataTest::testAdd with data set #3 (1, 1, 3)&lt;br /&gt;
Failed asserting that 2 matches expected 3.&lt;br /&gt;
/home/sb/DataTest.php:9&lt;br /&gt;
FAILURES!&lt;br /&gt;
Tests: 4, Assertions: 4, Failures: 1.phpunit DataTest&lt;br /&gt;
PHPUnit 3.7.0 by Sebastian Bergmann.&lt;br /&gt;
...F&lt;br /&gt;
Time: 0 seconds, Memory: 5.75Mb&lt;br /&gt;
There was 1 failure:&lt;br /&gt;
1) DataTest::testAdd with data set #3 (1, 1, 3)&lt;br /&gt;
Failed asserting that 2 matches expected 3.&lt;br /&gt;
/home/sb/DataTest.php:9&lt;br /&gt;
FAILURES!&lt;br /&gt;
Tests: 4, Assertions: 4, Failures: 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예제 4.5 Iterator Object 를 반환하는 데이터 제공자의 사용&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require &amp;#039;CsvFileIterator.php&amp;#039;;&lt;br /&gt;
class DataTest extends PHPUnit_Framework_TestCase&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * @dataProvider provider&lt;br /&gt;
	 */&lt;br /&gt;
	public function testAdd($a, $b, $c)&lt;br /&gt;
	{&lt;br /&gt;
		$this-&amp;gt;assertEquals($c, $a + $b);&lt;br /&gt;
	}&lt;br /&gt;
	public function provider()&lt;br /&gt;
	{&lt;br /&gt;
		return new CsvFileIterator(&amp;#039;data.csv&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PHPUnit 3.7.0 by Sebastian Bergmann.&lt;br /&gt;
...F&lt;br /&gt;
Time: 0 seconds, Memory: 5.75Mb&lt;br /&gt;
There was 1 failure:&lt;br /&gt;
1) DataTest::testAdd with data set #3 (&amp;#039;1&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;3&amp;#039;)&lt;br /&gt;
Failed asserting that 2 matches expected &amp;#039;3&amp;#039;.&lt;br /&gt;
/home/sb/DataTest.php:11&lt;br /&gt;
FAILURES!&lt;br /&gt;
Tests: 4, Assertions: 4, Failures: 1.phpunit DataTest&lt;br /&gt;
PHPUnit 3.7.0 by Sebastian Bergmann.&lt;br /&gt;
...F&lt;br /&gt;
Time: 0 seconds, Memory: 5.75Mb&lt;br /&gt;
There was 1 failure:&lt;br /&gt;
1) DataTest::testAdd with data set #3 (&amp;#039;1&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;3&amp;#039;)&lt;br /&gt;
Failed asserting that 2 matches expected &amp;#039;3&amp;#039;.&lt;br /&gt;
/home/sb/DataTest.php:11&lt;br /&gt;
FAILURES!&lt;br /&gt;
Tests: 4, Assertions: 4, Failures: 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예제 4.6 CsvFileIterator 클래스&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class CsvFileIterator implements Iterator {&lt;br /&gt;
	protected $file;&lt;br /&gt;
	protected $key = 0;&lt;br /&gt;
	protected $current;&lt;br /&gt;
	public function __construct($file) {&lt;br /&gt;
		$this-&amp;gt;file = fopen($file, &amp;#039;r&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
	public function __destruct() {&lt;br /&gt;
		fclose($this-&amp;gt;file);&lt;br /&gt;
	}&lt;br /&gt;
	public function rewind() {&lt;br /&gt;
		rewind($this-&amp;gt;file);&lt;br /&gt;
		$this-&amp;gt;current = fgetcsv($this-&amp;gt;file);&lt;br /&gt;
		$this-&amp;gt;key = 0;&lt;br /&gt;
	}&lt;br /&gt;
	public function valid() {&lt;br /&gt;
		return !feof($this-&amp;gt;file);&lt;br /&gt;
	}&lt;br /&gt;
	public function key() {&lt;br /&gt;
		return $this-&amp;gt;key;&lt;br /&gt;
	}&lt;br /&gt;
	public function current() {&lt;br /&gt;
		return $this-&amp;gt;current;&lt;br /&gt;
	}&lt;br /&gt;
	public function next() {&lt;br /&gt;
		$this-&amp;gt;current = fgetcsv($this-&amp;gt;file);&lt;br /&gt;
		$this-&amp;gt;key++;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
?&amp;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;
:@dataProvider 로 지정한 메소드와 @depends 로 지정한 테스트 양쪽 모두로부터 입력을 받는 테스트의 경우, 데이터 제공자로부터의 인수가 의존 테스트의 인수보다 먼저 입력됩니다.&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;&amp;quot;한 테스트가 데이터 제공자를 사용하는 다른 테스트에 의존하는 경우, 다른 테스트에서 하나 이상의 data set 에 대한 테스트가 성공한다면, 이 테스트도 실행됩니다. 데이터 제공자를 사용한 테스트의 결과를 이 테스트에 주입할 순 없습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;주의사항&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:모든 데이터 제공자를 실행한 뒤, 정적 메소드 setUpBeforeClass 나 setUp 메소드가 처음으로 호출되게 됩니다. 이 때문에, 데이터 제공자는 이들 메소드에서 선언한 변수에 접근할 수 없습니다. 이렇게 한 이유는, PHPUnit 가 테스트의 전체 숫자를 계산하기 위해서 입니다.&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>