<?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%3A13.1</id>
	<title>PHPUnitManual:13.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%3A13.1"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:13.1&amp;action=history"/>
	<updated>2026-05-02T02:59:20Z</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:13.1&amp;diff=3423&amp;oldid=prev</id>
		<title>Onionmixer: wiki문법 수정</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:13.1&amp;diff=3423&amp;oldid=prev"/>
		<updated>2013-07-04T08:57:15Z</updated>

		<summary type="html">&lt;p&gt;wiki문법 수정&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:57, 4 July 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l159&quot;&gt;Line 159:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 159:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;php&lt;/del&gt;&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;text&lt;/ins&gt;&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;phpunit --printer PHPUnit_Extensions_Story_ResultPrinter_Text BowlingGameSpec&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;phpunit --printer PHPUnit_Extensions_Story_ResultPrinter_Text BowlingGameSpec&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;PHPUnit 3.7.0 by Sebastian Bergmann.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;PHPUnit 3.7.0 by Sebastian Bergmann.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:13.1&amp;diff=3422&amp;oldid=prev</id>
		<title>Onionmixer: PHPUnit 13.1 볼링게임 예제 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=PHPUnitManual:13.1&amp;diff=3422&amp;oldid=prev"/>
		<updated>2013-07-04T08:56:46Z</updated>

		<summary type="html">&lt;p&gt;PHPUnit 13.1 볼링게임 예제 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;13.1 볼링게임 예제&lt;br /&gt;
&lt;br /&gt;
이 절에서는, 볼링 게임에서 점수를 계산하는 클래스를 예시합니다. 볼링의 룰은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
* 한 게임은 10 프레임으로 구성된다.&lt;br /&gt;
* 플레이어는 한 프레임에서 10개의 핀을 쓰러트리기 위해 공을 2번 던질 수 있다.&lt;br /&gt;
* 각 프레임의 점수는 쓰러트린 핀의 합계로, 스트라이크나 스페어를 달성하면 추가 보너스가 주어진다.&lt;br /&gt;
* 스페어란, 2번 던져서 10개의 핀을 전부 쓰러트리는 것을 말한다.&lt;br /&gt;
* 이 경우, 보너스는 다음에 공을 던져서 쓰러트린 핀의 수이다.&lt;br /&gt;
* 스트라이크란, 첫번째로 공을 던져서 10개의 핀을 전부 쓰러트리는 것을 말한다.&lt;br /&gt;
* 이 경우, 보너스는 다음의 공을 2번 던져서 쓰러트린 핀의 수이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예13.1 &amp;quot;BowlingGame 클래스의 명세&amp;quot; 는 위의 룰을 PHPUnit_Extensions_Story_TestCase 를 사용하여 명세 시나리오로 작성한 것입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
예13.1: BowlingGame 클래스의 명세&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_once &amp;#039;PHPUnit/Extensions/Story/TestCase.php&amp;#039;;&lt;br /&gt;
require_once &amp;#039;BowlingGame.php&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
class BowlingGameSpec extends PHPUnit_Extensions_Story_TestCase&lt;br /&gt;
{&lt;br /&gt;
    /**&lt;br /&gt;
     * @scenario&lt;br /&gt;
     */&lt;br /&gt;
    public function scoreForGutterGameIs0()&lt;br /&gt;
    {&lt;br /&gt;
        $this-&amp;gt;given(&amp;#039;New game&amp;#039;)&lt;br /&gt;
             -&amp;gt;then(&amp;#039;Score should be&amp;#039;, 0);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
     * @scenario&lt;br /&gt;
     */&lt;br /&gt;
    public function scoreForAllOnesIs20()&lt;br /&gt;
    {&lt;br /&gt;
        $this-&amp;gt;given(&amp;#039;New game&amp;#039;)&lt;br /&gt;
             -&amp;gt;when(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 1)&lt;br /&gt;
             -&amp;gt;then(&amp;#039;Score should be&amp;#039;, 20);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
     * @scenario&lt;br /&gt;
     */&lt;br /&gt;
    public function scoreForOneSpareAnd3Is16()&lt;br /&gt;
    {&lt;br /&gt;
        $this-&amp;gt;given(&amp;#039;New game&amp;#039;)&lt;br /&gt;
             -&amp;gt;when(&amp;#039;Player rolls&amp;#039;, 5)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 5)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 3)&lt;br /&gt;
             -&amp;gt;then(&amp;#039;Score should be&amp;#039;, 16);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
     * @scenario&lt;br /&gt;
     */&lt;br /&gt;
    public function scoreForOneStrikeAnd3And4Is24()&lt;br /&gt;
    {&lt;br /&gt;
        $this-&amp;gt;given(&amp;#039;New game&amp;#039;)&lt;br /&gt;
             -&amp;gt;when(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 3)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 4)&lt;br /&gt;
             -&amp;gt;then(&amp;#039;Score should be&amp;#039;, 24);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
     * @scenario&lt;br /&gt;
     */&lt;br /&gt;
    public function scoreForPerfectGameIs300()&lt;br /&gt;
    {&lt;br /&gt;
        $this-&amp;gt;given(&amp;#039;New game&amp;#039;)&lt;br /&gt;
             -&amp;gt;when(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;and(&amp;#039;Player rolls&amp;#039;, 10)&lt;br /&gt;
             -&amp;gt;then(&amp;#039;Score should be&amp;#039;, 300);&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    public function runGiven(&amp;amp;$world, $action, $arguments)&lt;br /&gt;
    {&lt;br /&gt;
        switch($action) {&lt;br /&gt;
            case &amp;#039;New game&amp;#039;: {&lt;br /&gt;
                $world[&amp;#039;game&amp;#039;]  = new BowlingGame;&lt;br /&gt;
                $world[&amp;#039;rolls&amp;#039;] = 0;&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
 &lt;br /&gt;
            default: {&lt;br /&gt;
                return $this-&amp;gt;notImplemented($action);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    public function runWhen(&amp;amp;$world, $action, $arguments)&lt;br /&gt;
    {&lt;br /&gt;
        switch($action) {&lt;br /&gt;
            case &amp;#039;Player rolls&amp;#039;: {&lt;br /&gt;
                $world[&amp;#039;game&amp;#039;]-&amp;gt;roll($arguments[0]);&lt;br /&gt;
                $world[&amp;#039;rolls&amp;#039;]++;&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
 &lt;br /&gt;
            default: {&lt;br /&gt;
                return $this-&amp;gt;notImplemented($action);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    public function runThen(&amp;amp;$world, $action, $arguments)&lt;br /&gt;
    {&lt;br /&gt;
        switch($action) {&lt;br /&gt;
            case &amp;#039;Score should be&amp;#039;: {&lt;br /&gt;
                for ($i = $world[&amp;#039;rolls&amp;#039;]; $i &amp;lt; 20; $i++) {&lt;br /&gt;
                    $world[&amp;#039;game&amp;#039;]-&amp;gt;roll(0);&lt;br /&gt;
                }&lt;br /&gt;
 &lt;br /&gt;
                $this-&amp;gt;assertEquals($arguments[0], $world[&amp;#039;game&amp;#039;]-&amp;gt;score());&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
 &lt;br /&gt;
            default: {&lt;br /&gt;
                return $this-&amp;gt;notImplemented($action);&lt;br /&gt;
            }&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;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
phpunit --printer PHPUnit_Extensions_Story_ResultPrinter_Text BowlingGameSpec&lt;br /&gt;
PHPUnit 3.7.0 by Sebastian Bergmann.&lt;br /&gt;
&lt;br /&gt;
BowlingGameSpec&lt;br /&gt;
 [x] Score for gutter game is 0&lt;br /&gt;
&lt;br /&gt;
   Given New game &lt;br /&gt;
    Then Score should be 0&lt;br /&gt;
&lt;br /&gt;
 [x] Score for all ones is 20&lt;br /&gt;
&lt;br /&gt;
   Given New game &lt;br /&gt;
    When Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
     and Player rolls 1&lt;br /&gt;
    Then Score should be 20&lt;br /&gt;
&lt;br /&gt;
 [x] Score for one spare and 3 is 16&lt;br /&gt;
&lt;br /&gt;
   Given New game &lt;br /&gt;
    When Player rolls 5&lt;br /&gt;
     and Player rolls 5&lt;br /&gt;
     and Player rolls 3&lt;br /&gt;
    Then Score should be 16&lt;br /&gt;
&lt;br /&gt;
 [x] Score for one strike and 3 and 4 is 24&lt;br /&gt;
&lt;br /&gt;
   Given New game &lt;br /&gt;
    When Player rolls 10&lt;br /&gt;
     and Player rolls 3&lt;br /&gt;
     and Player rolls 4&lt;br /&gt;
    Then Score should be 24&lt;br /&gt;
&lt;br /&gt;
 [x] Score for perfect game is 300&lt;br /&gt;
&lt;br /&gt;
   Given New game &lt;br /&gt;
    When Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
     and Player rolls 10&lt;br /&gt;
    Then Score should be 300&lt;br /&gt;
&lt;br /&gt;
Scenarios: 5, Failed: 0, Skipped: 0, Incomplete: 0.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;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>