<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sooey &#187; phpunit</title>
	<atom:link href="http://old-journal.sooey.com/tag/phpunit/feed/" rel="self" type="application/rss+xml" />
	<link>http://old-journal.sooey.com</link>
	<description></description>
	<lastBuildDate>Fri, 04 Dec 2009 08:44:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>次世代のPHPアジャイル開発へ向けて</title>
		<link>http://old-journal.sooey.com/2006/10/10/631/</link>
		<comments>http://old-journal.sooey.com/2006/10/10/631/#comments</comments>
		<pubDate>Tue, 10 Oct 2006 04:18:48 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/2006/10/10/631/</guid>
		<description><![CDATA[Xdebug 2.0.0RC1のリリースを受けて、PHPUnit 3.0 Beta 1が公開されました。PHPUnit3ではjMockライクなモックオブジェクト生成のサポートやSelenium RCとの統合など、これまで自前で用意する必要があった部分の多くがカバーされているので、PHP開発者の間にもアジャイル開発が定着していくと良いですね。
]]></description>
			<content:encoded><![CDATA[<p>Xdebug 2.0.0RC1の<a href="http://derickrethans.nl/the_first_release_candidate_of_xdebug_2.php">リリース</a>を受けて、<a href="http://sebastian-bergmann.de/archives/632-PHPUnit-3.0-Beta-1.html">PHPUnit 3.0 Beta 1</a>が公開されました。PHPUnit3ではjMockライクなモックオブジェクト生成のサポートやSelenium RCとの統合など、これまで自前で用意する必要があった部分の多くがカバーされているので、PHP開発者の間にもアジャイル開発が定着していくと良いですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2006/10/10/631/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPUnit2 2.3.3 &amp; PHPUnit 1.3.2 Release</title>
		<link>http://old-journal.sooey.com/2005/11/11/37/</link>
		<comments>http://old-journal.sooey.com/2005/11/11/37/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 17:08:11 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpunit]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/2005/11/11/37/</guid>
		<description><![CDATA[PHPUnit2 2.3.3 と PHPUnit 1.3.2 がリリースされました。変更点はライセンスが PHP License から BSD License になったことだけなのですが、最近色々な PHP 関連ライブラリが BSD License になっているような…。

実質的にはあまり変わらないと思うんですが、何かあったのかな？
]]></description>
			<content:encoded><![CDATA[<p><a href="http://pear.php.net/package/PHPUnit2/download/2.3.3/">PHPUnit2 2.3.3</a> と <a href="http://pear.php.net/package/PHPUnit/download/1.3.2/">PHPUnit 1.3.2</a> がリリースされました。変更点はライセンスが PHP License から BSD License になったことだけなのですが、最近色々な PHP 関連ライブラリが BSD License になっているような…。</p>

<p>実質的にはあまり変わらないと思うんですが、何かあったのかな？</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2005/11/11/37/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPUnit2 で例外発生をチェックするイディオム</title>
		<link>http://old-journal.sooey.com/2005/11/10/35/</link>
		<comments>http://old-journal.sooey.com/2005/11/10/35/#comments</comments>
		<pubDate>Thu, 10 Nov 2005 08:01:08 +0000</pubDate>
		<dc:creator>juno</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpunit]]></category>

		<guid isPermaLink="false">http://www.sooey.com/journal/?p=35</guid>
		<description><![CDATA[PHPUnit2を使ったテストケースクラスで「例外が正しく発生するか」を検証するにはどのようにコーディングすればよいか？

以下のように「例外が発生することを期待する」コードをtry-catchで囲み、例外が発生しなかった場合に$this-&#62;fail()が呼ばれるようにコーディングするのが定石のようです。

&#60;?php
public SomeClassTest extends PHPUnit2_Framework_TestCase &#123;
    public function testFoo&#40;&#41;
    &#123;
        $obj = new SomeClass;
&#160;
        try &#123;
            // SomeClass_Exception を発生させるメソッド呼び出し
       [...]
]]></description>
			<content:encoded><![CDATA[<p>PHPUnit2を使ったテストケースクラスで「例外が正しく発生するか」を検証するにはどのようにコーディングすればよいか？</p>

<p>以下のように「例外が発生することを期待する」コードを<code>try-catch</code>で囲み、例外が発生しなかった場合に<code>$this-&gt;fail()</code>が呼ばれるようにコーディングするのが定石のようです。</p>

<p><pre class="php"><span class="kw2">&lt;?php</span>
<span class="kw2">public</span> SomeClassTest <span class="kw2">extends</span> PHPUnit2_Framework_TestCase <span class="br0">&#123;</span>
    <span class="kw2">public</span> <span class="kw2">function</span> testFoo<span class="br0">&#40;</span><span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
        <span class="re0">$obj</span> = <span class="kw2">new</span> SomeClass;
&nbsp;
        try <span class="br0">&#123;</span>
            <span class="co1">// SomeClass_Exception を発生させるメソッド呼び出し</span>
            <span class="re0">$obj</span>-&gt;<span class="me1">foo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
            <span class="co1">// 例外が発生しなかった場合は $this-&gt;fail() を呼ぶ</span>
            <span class="re0">$this</span>-&gt;<span class="me1">fail</span><span class="br0">&#40;</span><span class="st0">'Exception not thrown'</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span> catch <span class="br0">&#40;</span>SomeClass_Exception <span class="re0">$e</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="co1">// 例外が発生した場合は問題が無いことを明示するために</span>
            <span class="co1">// 常に成功するassertメソッドを記述しておく</span>
            <span class="re0">$this</span>-&gt;<span class="me1">assertTrue</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
<span class="kw2">?&gt;</span></pre></p>

<p>これで、<code>SomeClass::foo()</code>が<code>SomeClass_Exception</code>をスローしなかった場合には以下のようにテストの失敗が報告されるようになります。</p>

<pre><code>There was 1 failure:
1) test1(SomeClassTest)
Exception not thrown
/Users/juno/src/SomeClassTest:105
</code></pre>

<p><code>SomeClass_Exception</code>がスローされた場合はテストは正常に完了します。</p>

<p>なお、上記のようにテストメソッドをコーディングする際に捕捉する例外クラスとして<code>Exception</code>を指定してはいけません。<code>$this-&gt;fail()</code>の実体である<code>PHPUnit2_Framework_Assert::fail()</code>は以下のように定義されており、</p>

<pre><code>public static function fail($message = '') {
    throw new PHPUnit2_Framework_AssertionFailedError($message);
}
</code></pre>

<p>ここで例外として投げられている<code>PHPUnit2_Framework_AssertionFailedError</code>が<code>Exception</code>を継承しているのです。従って、Exception をキャッチするように記述してしまうと「<code>SomeClass_Exception</code>が発生しなかった場合に<code>$this-&gt;fail()</code>が投げる例外」も捕捉されてしまい、テストの失敗が報告されなくなってしまいます。</p>

<p>自前のクラスからは<code>Exception</code>そのものをスローするのではなく、<code>Exception</code>のサブクラスを定義するようにしましょう、ということで。</p>
]]></content:encoded>
			<wfw:commentRss>http://old-journal.sooey.com/2005/11/10/35/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
