• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 測試用例詳解(3)

    發表于:2014-08-01來源:uml.org.cn作者:nonultimate點擊數: 標簽:測試用例
    { return $a * $b; } } ? PHP代碼 require_once Calculator.php; class CalcuatorTest extends PHPUnit_Framework_TestCase { public function testadd() { // 創建實例 $c = new Calculator(); $expected = 4

      {

      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

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>