{
return $a * $b;
}
}
?>
PHP代碼
require_once 'Calculator.php';
class CalcuatorTest extends PHPUnit_Framework_TestCase
{
public function testadd()
{
// 創建實例
$c = new Calculator();
$expected = 4;
// 做加法
$result = $c->add(2, 2);
$this->assertEquals($expected, $result);
}
}
?>
合理的測試能幫助我們盡早發現錯誤。add()方法有兩個參數,測試的時候用了兩個值相同的參數。如果多做幾次測試又太麻煩,對于這個測試我們按照科學的方法只需要一次。從概率學上講,當你使用的參數差異越大時,結果相同的概率越低。
對于只有幾個返回值的情況,要測試全部,如布爾類型。
PHP代碼
/**
* File.php
*/
/**
* 在文件中寫入數據并保存
*
* @param string $path
* @param string $data
* @return bool
*/
function Save($path, $data)
{
if (is_dir($path)) {
return FALSE;
}
return file_put_contents($path, $data);
}
?>
PHP代碼
/**
* FileTest.php
*/
require_once 'File.php';
class FileTest extends PHPUnit_Framework_TestCase
{
/**
* 測試保存文件
*/
public function testSave()
{
$file = 'IamFile.txt';
$dir = 'IamDir';
mkdir($dir);
// 測試返回值為真的情況
$this->assertTrue(Save($file, 'TestTrue'));
// 測試返回值為假的情況
$this->assertFalse(Save($dir, 'TestFalse'));
// 恢復現場
if (is_file($file)) {
unlink($file);
}
rmdir($dir);
}
}
?>
對于有多種類型返回值或不同參數的情況,分別測試每種類型和參數。下面是ThinkPHP源代碼中的一個函數,有點復雜。這個例子不能單獨運行,如需要請用SVN導出最新的ThinkPHP源代碼(含單元測試)。
PHP代碼
/**
* URL生成函數
*
* @param string $action 方法名
* @param string $module 模塊名
* @param string $route 路由名
* @param array $params 參數
*/
function url($action=ACTION_NAME,$module=MODULE_NAME,$route='',$app=APP_NAME,$params=array())
{
if(C('DISPATCH_ON') && C('URL_MODEL')>0) {
switch(C('PATH_MODEL')) {
case 1:// 普通PATHINFO模式
$str = '/';
foreach ($params as $var=>$val)
$str .= $var.'/'.$val.'/';
$str = substr($str,0,-1);
if(!emptyempty($route)) {
$url = str_replace(APP_NAME,$app,).'/'.C('VAR_ROUTER').'/'.$route.'/'.$str;
}else{
$url = str_replace(APP_NAME,$app,).'/'.C('VAR_MODULE').'/'.$module.'/'.C('VAR_ACTION').'/'.$action.$str;
}
break;
case 2:// 智能PATHINFO模式
$depr = C('PATH_DEPR');
$str = $depr;
foreach ($params as $var=>$val)
$str .= $var.$depr.$val.$depr;
$str = substr($str,0,-1);
if(!emptyempty($route)) {
$url = str_replace(APP_NAME,$app,).'/'.$route.$str;
}else{
$url = str_replace(APP_NAME,$app,).'/'.$module.$depr.$action.$str;
}
break;
}
if(C('HTML_URL_SUFFIX')) {
$url .= C('HTML_URL_SUFFIX');
}
}else{
$params = http_build_query($params);
if(!emptyempty($route)) {
$url = str_replace(APP_NAME,$app,).'?'.C('VAR_ROUTER').'='.$route.'&'.$params;
}else{
$url = str_replace(APP_NAME,$app,).'?'.C('VAR_MODULE').'='.$module.'&'.C('VAR_ACTION').'='.$action.'&'.$params;
原文轉自:http://www.uml.org.cn/Test/200910169.asp