测试用例详解(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