測試用例詳解(2)

發表于:2014-08-01來源:uml.org.cn作者:nonultimate點擊數: 標簽:測試用例
assertFileExists 斷言文件存在 assertFileNotEquals 斷言文件內容不等于 assertFileNotExists 斷言文件不存在 XML相關 assertXmlFileEqualsXmlFile 斷言XML文件內容相等 assertXml

  assertFileExists 斷言文件存在

  assertFileNotEquals 斷言文件內容不等于

  assertFileNotExists 斷言文件不存在

  XML相關

  assertXmlFileEqualsXmlFile 斷言XML文件內容相等

  assertXmlFileNotEqualsXmlFile 斷言XML文件內容不相等

  assertXmlStringEqualsXmlFile 斷言XML字符串等于XML文件內容

  assertXmlStringEqualsXmlString 斷言XML字符串相等

  assertXmlStringNotEqualsXmlFile 斷言XML字符串不等于XML文件內容

  assertXmlStringNotEqualsXmlString 斷言XML字符串不相等

  有返回值的方法或函數根據其類型選擇相應的斷言,下面是一個簡單例子。

  PHP代碼

  class UnitTest extends PHPUnit_Framework_TestCase

  {

  /**

  * 測試返回值為布爾類型

  */

  public function testReturnBool()

  {

  // 實際情況把TRUE和FALSE換為被測試方法或函數

  $this->assertTrue(TRUE);

  $this->assertFalse(FALSE);

  }

  /**

  * 測試返回值為字符串類型

  */

  public function testReturnString()

  {

  $expected = 'string';

  // 實際情況把下面的'string'換為被測試方法或函數

  $result = 'string';

  $this->assertEquals($expected, $result);

  }

  /**

  * 測試返回值是數字類型

  */

  public function testReturnInt()

  {

  $expected = 10;

  // 實際情況把20換為被測試方法或函數

  $result = 20;

  $this->assertGreaterThan($expected, $result);

  }

  /**

  * 測試返回值是數組類型

  */

  public function testReturnArray()

  {

  // 實際情況把$result賦值為被測試方法或函數

  $result = array('test' => 'hello');

  // 實際情況把'test'換為要測試的鍵名稱

  $this->assertArrayHasKey('test', $result);

  }

  /**

  * 測試返回值是對象類型

  */

  public function testReturnObject()

  {

  // 實際情況把$this換為期望的對象

  $expected = $this;

  // 實際情況把$this換為被測試方法或函數

  $result = $this;

  $this->assertSame($expected, $result);

  }

  }

  ?>

  無返回值的方法,可以通過其他方法讀取屬性,也可以使用對象類型中的斷言來判斷屬性的改變。

  PHP代碼

  /**

  * Unit類,有一個無返回值方法

  */

  class Unit

  {

  protected $name;

  /**

  * 設置name屬性

  */

  public function setName($value)

  {

  $this->name = $value;

  }

  }

  ?>

  PHP代碼

  require_once 'Unit.php';

  class UnitTest extends PHPUnit_Framework_TestCase

  {

  /**

  * 測試無返回值的方法

  */

  public function testsetName()

  {

  $expected = 'Hello';

  $o = new Unit();

  $o->setName('Hello');

  $this->assertAttributeEquals($expected, 'name', $o);

  }

  }

  ?>

  編寫測試

  編寫測試的原則是,盡可能測試每種不同的參數調用和不同的返回結果類型,既要測試成功的情況,也要測試失敗的情況;無返回值的情況,要測試屬性改變、輸出內容、異常類型等;測試后記得要恢復現場。

  在這里做了超出自己能力的事并不光榮。在你寫某個函數之前,你只想讓它做加法,但它卻能做乘法,而且單元測試正確通過。我們來看看它是怎么做到的。

  PHP代碼

  /**

  * 計算器類

  */

  class Calculator

  {

  /**

  * 做加法運算

  *

  * @param int $a

  * @param int $b

  * @return int

  */

  public function add($a, $b)

原文轉自:http://www.uml.org.cn/Test/200910169.asp

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97