<?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%3A16.1</id>
	<title>PHPUnitManual:16.1 - 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%3A16.1"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:16.1&amp;action=history"/>
	<updated>2026-05-02T12:40:26Z</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:16.1&amp;diff=3436&amp;oldid=prev</id>
		<title>Onionmixer: PHPUnit 16.1 Test Case 클래스의 Skeleton 을 생성 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:16.1&amp;diff=3436&amp;oldid=prev"/>
		<updated>2013-07-04T09:25:24Z</updated>

		<summary type="html">&lt;p&gt;PHPUnit 16.1 Test Case 클래스의 Skeleton 을 생성 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;16.1 Test Case 클래스의 Skeleton 을 생성&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;
public function testMethod()&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PHPUnit Skeleton Generator 는 기존 클래스의 코드를 분석하여, 테스트 클래스의 skeleton 을 만들 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예16.1 Calculator 클래스&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 Calculator&lt;br /&gt;
{&lt;br /&gt;
    public function add($a, $b)&lt;br /&gt;
    {&lt;br /&gt;
        return $a + $b;&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;
다음 예는, Calculator ( 예16.1 &amp;quot;Calculator 클래스&amp;quot; 를 참조하세요) 클래스를 위한 테스트 클래스의 skeleton 을 만드는 과정입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
phpunit-skelgen --test Calculator&lt;br /&gt;
PHPUnit Skeleton Generator 1.0.0 by Sebastian Bergmann.&lt;br /&gt;
&lt;br /&gt;
Wrote skeleton for &amp;quot;CalculatorTest&amp;quot; to &amp;quot;/home/sb/CalculatorTest.php&amp;quot;.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
클래스의 각 메소드에 대해, 작성된 test case 클래스의 test case 는 불완전한 상태 (제9장 을 참조하세요) 입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;Namespace 를 가지는 클래스와 Skeleton Generator&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:Namespace 안에서 선언된 클래스를 테스트하기 위한 코드를 Skeleton Generator 로 생성할 때는, 해당 클래스의 qualified name 과, 클래스가 선언되어 있는 소스 파일의 경로를 넘겨야 합니다.&lt;br /&gt;
&lt;br /&gt;
:예를 들어, namespace Project 에 Calculator 클래스가 선언되어 있는 경우, 다음과 같이 Skeleton Generator 를 실행합니다.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;phpunit-skelgen --test -- &amp;quot;project\Calculator&amp;quot; Calculator.php&lt;br /&gt;
PHPUnit Skeleton Generator 1.0.0 by Sebastian Bergmann.&lt;br /&gt;
&lt;br /&gt;
Wrote skeleton for &amp;quot;project\CalculatorTest&amp;quot; to &amp;quot;/home/sb/CalculatorTest.php&amp;quot;.&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
생성된 테스트 클래스를 실행한 결과는 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
phpunit --bootstrap Calculator.php --verbose CalculatorTest&lt;br /&gt;
PHPUnit 3.7.0 by Sebastian Bergmann.&lt;br /&gt;
&lt;br /&gt;
I&lt;br /&gt;
&lt;br /&gt;
Time: 0 seconds, Memory: 3.50Mb&lt;br /&gt;
&lt;br /&gt;
There was 1 incomplete test:&lt;br /&gt;
&lt;br /&gt;
1) CalculatorTest::testAdd&lt;br /&gt;
This test has not been implemented yet.&lt;br /&gt;
&lt;br /&gt;
/home/sb/CalculatorTest.php:38&lt;br /&gt;
OK, but incomplete or skipped tests!&lt;br /&gt;
Tests: 1, Assertions: 0, Incomplete: 1.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@assert 선언을 메소드의 주석에 사용하여, 단순하지만 의미를 가지는 테스트를 자동 생성할 수 있습니다. 이는 불완전한 test case 가 아닙니다. 예16.2 &amp;quot;@assert 선언을 사용한 Calculator 클래스&amp;quot; 가 그 예입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예16.2 @assert 선언을 사용한 Calculator 클래스&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
class Calculator&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @assert (0, 0) == 0&lt;br /&gt;
     * @assert (0, 1) == 1&lt;br /&gt;
     * @assert (1, 0) == 1&lt;br /&gt;
     * @assert (1, 1) == 2&lt;br /&gt;
     */&lt;br /&gt;
    public function add($a, $b)&lt;br /&gt;
    {&lt;br /&gt;
        return $a + $b;&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;
기존 클래스의 각 메소드에 대해, @assert 선언의 내용을 체크합니다. 그 결과, 다음과 같은 테스트 코드가 생성됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
    /**&lt;br /&gt;
     * Generated from @assert (0, 0) == 0.&lt;br /&gt;
     */&lt;br /&gt;
    public function testAdd() {&lt;br /&gt;
        $o = new Calculator;&lt;br /&gt;
        $this-&amp;gt;assertEquals(0, $o-&amp;gt;add(0, 0));&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
생성된 test case 클래스의 실행 결과는 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
phpunit --bootstrap Calculator.php --verbose CalculatorTest&lt;br /&gt;
PHPUnit 3.7.0 by Sebastian Bergmann.&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
Time: 0 seconds, Memory: 3.50Mb&lt;br /&gt;
&lt;br /&gt;
OK (4 tests, 4 assertions)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&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;선언&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;
|@assert (...) == X||assertEquals(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) != X||assertNotEquals(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) === X||assertSame(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) !== X||assertNotSame(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) &amp;gt; X||assertGreaterThan(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) &amp;gt;= X||assertGreaterThanOrEqual(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) &amp;lt; X||assertLessThan(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) &amp;lt;= X||assertLessThanOrEqual(X, method(...))&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|@assert (...) throws X||@expectedException X&lt;br /&gt;
|- style=&amp;quot;color: black; background-color: gray;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |표16.1 @assert 선언의 지원 목록&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>