<?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>庆亮的博客-webgame架构 &#187; 单元测试</title>
	<atom:link href="http://www.qingliangcn.com/tag/%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.qingliangcn.com</link>
	<description>关注LAMP&#124;PHP源代码分析&#124;web架构&#124;PHP扩展&#124;Erlang&#124;服务端架构</description>
	<lastBuildDate>Wed, 11 Aug 2010 15:25:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>PHPUnit简单入门</title>
		<link>http://www.qingliangcn.com/2008/10/phpunit%e7%ae%80%e5%8d%95%e5%85%a5%e9%97%a8/</link>
		<comments>http://www.qingliangcn.com/2008/10/phpunit%e7%ae%80%e5%8d%95%e5%85%a5%e9%97%a8/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 12:40:36 +0000</pubDate>
		<dc:creator>庆亮</dc:creator>
				<category><![CDATA[暂未分类]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[ttd]]></category>
		<category><![CDATA[单元测试]]></category>

		<guid isPermaLink="false">http://www.nd21.com/?p=116</guid>
		<description><![CDATA[Php的测试驱动开发闻之已久,却从来没有试用过,今天又看到相关的介绍,就花了点时间简单的看了下. 以下为从官方实例翻译过的来笔记: 从一个案例开始 &#160;&#160;通常我们在测试我们的php程序时,会使用诸如print,echo等语句来输出一些结果,以查看我们的程序是否正常或者哪里出错.例如: &#60;?php&#160;&#160;&#160; $array&#160;=&#160;array();&#160;&#160;&#160; print&#160;sizeof($array);&#160;&#160;&#160; array_push($array,&#160;&#8216;newElement&#8217;);&#160;&#160;&#160; print&#160;sizeof($array);&#160;&#160; 结果 0 1 这样我们就知道$array变量是我们预期的结果.现在我们希望能够直观给出测试的结果,而不是看到0, 1这样的结果后再去判断. 我们修改测试代码: &#60;?php&#160;&#160;&#160; $array&#160;=&#160;array();&#160;&#160;&#160; print&#160;(sizeof($array)&#160;==&#160;0)&#160;?&#160;&#34;OK\n&#34;&#160;:&#160;&#34;Not&#160;Ok\n&#34;;&#160;&#160;&#160; array_push($array,&#160;&#8216;newElement&#8217;);&#160;&#160;&#160; print&#160;(sizeof($array)&#160;==&#160;1)&#160;?&#160;&#34;OK\n&#34;&#160;:&#160;&#34;Not&#160;Ok\n&#34;;&#160; 结果 OK OK 为了方便重用及修改我们将测试代码的断言部分置于函数中 &#60;?php&#160;&#160;&#160; $array&#160;=&#160;array();&#160;&#160;&#160; assertTrue(sizeof($array)&#160;==&#160;0);&#160;&#160;&#160; array_push($array,&#160;&#8216;newElement&#8217;);&#160;&#160;&#160; assertTrue(sizeof($array)&#160;==&#160;1);&#160;&#160;&#160; &#160;&#160; function&#160;assertTrue($condition)&#160;&#160;&#160; {&#160;&#160;&#160; &#160;&#160;if&#160;(!$condition)&#160;&#160;&#160; &#160;&#160;&#160;&#160;throw&#160;new&#160;Exception(&#8216;Assertion&#160;Failed!&#8217;);&#160;&#160;&#160; }&#160;&#160; &#160; 如此我们就可以简单的实现测试的自动化了. 自动测试的目的是减少错误,使用自动测试你能够明显发现你的代码的错误的减少.还有一些其他的好处&#8230;&#8230;PHPUnit的目标就是如此.那么我们开始我们的PHP Unit Test吧. 一.&#160;&#160;安装PHPUnit需要使用Pear Installer安装, 加入phpunit频道到pear寻找频道 D:\wamp\bin\php\php5.2.6&#62;pear channel-discover pear.phpunit.de Adding Channel &#34;pear.phpunit.de&#34; succeeded Discovery of channel &#34;pear.phpunit.de&#34; succeeded]]></description>
			<content:encoded><![CDATA[<p>Php的测试驱动开发闻之已久,却从来没有试用过,今天又看到相关的介绍,就花了点时间简单的看了下. 以下为从官方实例翻译过的来笔记:</p>
<p><span style="color: #0000ff"><strong>从一个案例开始</strong></span><br />
&nbsp;&nbsp;通常我们在测试我们的php程序时,会使用诸如print,echo等语句来输出一些结果,以查看我们的程序是否正常或者哪里出错.例如:</p>
<div class="Section0" style="layout-grid:  15.6pt none">
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&lt;?php</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">=&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">();&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">print&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">array_push(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&#8216;newElement&#8217;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">print&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;</span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">结果<br />
0<br />
1<br />
这样我们就知道$array变量是我们预期的结果.现在我们希望能够直观给出测试的结果,而不是看到0, 1这样的结果后再去判断. 我们修改测试代码:</p>
<p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&lt;?php</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">=&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">();&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">print&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;==&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;?&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&quot;OK\n&quot;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">:&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&quot;Not&nbsp;Ok\n&quot;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">array_push(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&#8216;newElement&#8217;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">print&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;==&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;?&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&quot;OK\n&quot;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">:&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&quot;Not&nbsp;Ok\n&quot;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">;&nbsp;</span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">结果<br />
OK<br />
OK</p>
<p>为了方便重用及修改我们将测试代码的断言部分置于函数中</p>
<p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&lt;?php</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">=&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">();&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">assertTrue(sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;==&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">array_push(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&#8216;newElement&#8217;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">assertTrue(sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;==&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">function&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">assertTrue(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$condition</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">{&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">if&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(!</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$condition</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">throw&nbsp;new&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">Exception(</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&#8216;Assertion&nbsp;Failed!&#8217;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">}&nbsp;&nbsp;</span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt">&nbsp;</p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">如此我们就可以简单的实现测试的自动化了.<br />
自动测试的目的是减少错误,使用自动测试你能够明显发现你的代码的错误的减少.还有一些其他的好处&hellip;&hellip;PHPUnit的目标就是如此.那么我们开始我们的PHP Unit Test吧.</p>
<p>
<span style="color: #0000ff">一.&nbsp;&nbsp;安装</span>PHPUnit需要使用Pear Installer安装, 加入phpunit频道到pear寻找频道</p>
<p>D:\wamp\bin\php\php5.2.6&gt;pear channel-discover pear.phpunit.de<br />
Adding Channel &quot;pear.phpunit.de&quot; succeeded<br />
Discovery of channel &quot;pear.phpunit.de&quot; succeeded</p>
<p>安装PHPUnit<br />
D:\wamp\bin\php\php5.2.6&gt;pear install phpunit/PHPUnit<br />
Did not download optional dependencies: pear/Image_GraphViz, pear/Log, use &#8211;all<br />
deps to download automatically<br />
phpunit/PHPUnit can optionally use package &quot;pear/Image_GraphViz&quot; (version &gt;= 1.2<br />
.1)<br />
phpunit/PHPUnit can optionally use package &quot;pear/Log&quot;<br />
phpunit/PHPUnit can optionally use PHP extension &quot;pdo_sqlite&quot;<br />
phpunit/PHPUnit can optionally use PHP extension &quot;xdebug&quot; (version &gt;= 2.0.0)<br />
downloading PHPUnit-3.3.4.tgz &#8230;<br />
Starting to download PHPUnit-3.3.4.tgz (268,962 bytes)<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..done: 268,962 bytes<br />
install ok: channel://pear.phpunit.de/PHPUnit-3.3.4</p>
<p>安装成功,在pear路径下即可看到PHPUnit文件夹,所有PHPUnit源码都在其中.</p>
<p>成功安装之后,会在PHP主目录下生成一个PHPUnit.bat的文件, 这样我们编写测试用例之后可以在命名行下使用如下的语法即可自动进行测试:<br />
&gt; PHPUnit test_begin.php<br />
test_begin.php为包含了测试用例的文件</p>
<p>对每个测试，PHPUnit命令行测试工具打印一个字符表示进程：</p>
<p>　　测试成功打印&ldquo;.&rdquo;。</p>
<p>　　运行测试方法发生了断言失败打印&ldquo;F&rdquo;。</p>
<p>　　运行测试方法发生了错误打印&ldquo;E&rdquo;。</p>
<p>
<span style="color: #0000ff">二.&nbsp;&nbsp;开始一个简单的示例</span><br />
对于刚刚在开始中的示例(测试数组大小),我们可以使用PHPUnit来编写自动化测试代码了:</p>
<p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&lt;?php</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">//filename:&nbsp;test_begin.php&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; text-decoration: underline; mso-spacerun: 'yes'">require_once</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; text-decoration: underline; mso-spacerun: 'yes'">(</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; text-decoration: underline; mso-spacerun: 'yes'">&#8216;PHPUnit/Framework.php&#8217;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; text-decoration: underline; mso-spacerun: 'yes'">);</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">class&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">ArrayTest&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">extends&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">PHPUnit_Framework_TestCase&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">public&nbsp;function&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">testNewArrayIsEmpty()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">//&nbsp;定义一个数组变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$fixture&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">=&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">//&nbsp;断言数组的大小为0.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$this</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">-&gt;assertEquals(</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$fixture</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">public&nbsp;function&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">testArrayContainsAnElement()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">//&nbsp;定义一个数组变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$fixture&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">=&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">//&nbsp;为数组变量增加一个元素&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$fixture</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">[]&nbsp;=&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,130,0); font-size: 10.5pt; mso-spacerun: 'yes'">&#8216;Element&#8217;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">//&nbsp;断言该数组大小为1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$this</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">-&gt;assertEquals(</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;sizeof(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$fixture</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">}&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt">&nbsp;</p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p><!--EndFragment-->&gt; PHPUnit test_begin.php <br />
结果:<br />
PHPUnit 3.3.4 by Sebastian Bergmann.</p>
<p>..</p>
<p>Time: 0 seconds</p>
<p>OK (2 tests, 2 assertions)</p>
<p>..  表示两次测试成功</p>
<p>这个例子显示了使用PHPUnit编写测试用例的基本步骤:<br />
1.&nbsp;&nbsp;测试类名为ClassTest,其中Class为你的对象名<br />
2.&nbsp;&nbsp;测试类ClassTest通常派生自PHPUnit_Framework_TestCase<br />
3.&nbsp;&nbsp;测试通常是一些名称为test*的公共方法. 另一种方法是, 你可以在方法的注释说明中使用@test 标记来表明这是一个测试方法.<br />
4.&nbsp;&nbsp;诸如assertEquals之类的方法用以测试一个实际值同预想值是否相对.</p>
<p>一个测试方法可以接受任何的参数(任意类型和数量), 参数通过provider()方法来提供,或者同测试方法一下,使用@dataProvider注释标记来标明.关于provider()的返回参数也有一定要求: 要么是数组(每个数据作为一个参数, 数组中可以包含多组参数), 要么是实现了Iterator接口的对象</p>
<p><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;</p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&lt;?php</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">class&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">DataTest&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">extends&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">PHPUnit_Framework_TestCase&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">{&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'">/**&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@dataProvider&nbsp;provider&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(128,128,128); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">public&nbsp;function&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">testAdd(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$a</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$b</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$c</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$this</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">-&gt;assertEquals(</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$c</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$a&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">+&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(102,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">$b</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">public&nbsp;function&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">provider()&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">return&nbsp;array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">),&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">),&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">0</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">),&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(0,0,255); font-size: 10.5pt; mso-spacerun: 'yes'">array</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">(</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">1</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">,&nbsp;</span><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">3</span><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">)&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(0,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">}&nbsp;&nbsp;</span><span style="font-family: 'Courier New'; font-size: 10.5pt; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt"><span style="font-family: 'Courier New'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">?&gt;</span></p>
<p><!--{12469715228590}--></span></p>
<p>&nbsp;</p>
<p class="p0" style="margin-top: 0pt; margin-bottom: 0pt">&nbsp;</p>
<p><!--{12469715228591}--></p>
<p>结果:<br />
PHPUnit 3.3.4 by Sebastian Bergmann.<br />
&#8230;F<br />
Time: 0 seconds<br />
There was 1 failure:<br />
1) testAdd(DataTest) with data set #3 (1, 1, 3)<br />
Failed asserting that matches expected value .<br />
D:\wamp\www\Test\php\unittest\data_provider.php:9</p>
<p>FAILURES!<br />
Tests: 4, Assertions: 4, Failures: 1.</p>
<p>&#8230;F  表示三个测试成功,一次测试失败.<br />
到此就可以简单的使用PHPUnit了,当然PHPUnit的功能远不止此,测试人员应该好好学习一下.&nbsp;</p>
<p>&nbsp;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.qingliangcn.com/2008/10/phpunit%e7%ae%80%e5%8d%95%e5%85%a5%e9%97%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

